因此,我尝试获取带或不带区号的电话号码列表(假装电话号码为9位数字)
import re
def message_6():
phone_regex = re.compile(r'(\d\d\d-)?\d\d\d-\d\d\d')
mo = phone_regex.findall("Call me at 966-123-412 or 237-128")
print(mo)
message_6()
但是我得到的列表是['966-','']我希望它输出像这样的列表['966-123-412','237-128']
问题来源:stackoverflow
正则表达式仅捕获括号()中的内容。因此,您必须将整个正则表达式放入其中:
import re
def message_6():
phone_regex = re.compile(r'(\d\d\d-)?\d\d\d-\d\d\d')
mo = phone_regex.findall("Call me at 966-123-412 or 237-128")
print(mo)
message_6()
但随后返回两个值的元组。 为什么? 那是因为您有两个捕获组。一个代表整数,另一个代表可选部分。因此,您可以在捕获组的开头插入?:
来忽略它。
import re
def message_6():
phone_regex = re.compile(r'((?:\d\d\d-)?\d\d\d-\d\d\d)')
mo = phone_regex.findall("Call me at 966-123-412 or 237-128")
print(mo)
message_6()
可以根据需要工作。
如果需要,也可以将其缩短为r'((?:\ d {3}-){1,2} \ d {3})'
。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。