本文介绍了修改使用正则表达式选择电话号码的变体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import re
s =  'nums here (111)123-4567 or (1-800-111-2222)(123)1234567 or 321-123-4567 or ( 112)123-4567 or (113 )123-4567'

我的目标是从 s 获取所有电话号码.

My goal is to get all phone numbers from s.

使用正则表达式选择电话号码的变体 我尝试了以下:

reg = r'\d{3}-\d{3}-\d{4}|\(\s*\d{3}\s*\)\d{7}|\(\s*\d{3}\s*\)\s*\d{3}-\d{4}'
r1 = re.findall(reg,s)
r1

这让我接近我想要的

['(111)123-4567',
 '800-111-2222',
 '(123)1234567',
 '321-123-4567',
 '( 112)123-4567',
 '(113 )123-4567']

但是,我想要 (1-800-111-2222) 而不是部分 800-111-2222

However, I would like (1-800-111-2222) instead of the partial 800-111-2222

我想要的输出如下

 ['(111)123-4567',
     '(1-800-111-2222)',
     '(123)1234567',
     '321-123-4567',
     '( 112)123-4567',
     '(113 )123-4567']

如何修改

reg = r'\d{3}-\d{3}-\d{4}|\(\s*\d{3}\s*\)\d{7}|\(\s*\d{3}\s*\)\s*\d{3}-\d{4}'

得到我想要的输出?

推荐答案

import re
s =  'nums here (111)123-4567 or (1-800-111-2222)(123)1234567 or 321-123-4567 or ( 112)123-4567 or (113 )123-4567'

reg="\(\d{3}\)\d{3}-\d{4}|\(\d{1}-\d{3}-\d{3}-\d{4}\)|\(\d{3}\)\d{7}|\d{3}-\d{3}-\d{4}|\(\s+\d{3}\)\d{3}-\d{4}|\(\d{3}\s+\)\d{3}-\d{4}"

r1 = re.findall(reg,s)
r1


在上面运行,输出:

['(111)123-4567',
 '(1-800-111-2222)',
 '(123)1234567',
 '321-123-4567',
 '( 112)123-4567',
 '(113 )123-4567']

这篇关于修改使用正则表达式选择电话号码的变体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 19:06