regex - 使用正则表达式修改选择电话号码的变体
问题描述
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
。
通过使用正则表达式选择电话号码的变体,我尝试以下操作:
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
我想要的输出如下
['(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']
推荐阅读
- kubernetes - Kubernetes:多个 pod 还是多个部署?
- amazon-redshift - 如何使用红移光谱查看 S3 中的数据目录表
- java - 如何在 Google 登录的导航抽屉上显示用户详细信息,例如姓名、电子邮件和图像?
- ios - CNContacts 未从联系人列表中获取所有联系人
- amazon-web-services - AWS Cognito:重试自定义挑战
- mongodb - Mongo 将一个表列设置为一个表的选项
- python - 如何在芹菜中成功运行和弦链?
- python - Cython 将双复数返回到浮点复数会导致表达式不在纯 C 中
- ios - Firebase ios 使用 FirebaseUI 管理下载
- java - 如何在安卓应用程序中与电脑对战 - tic tac toe