我刚刚开始使用python的re模块,并正在制作一个regex,它可以从一个大的文本文件中取出所有电话号码。 下面是一个例子: 编号:02453952568,0245-3952568,(0245)3952568,0245 3952568,3952568。我想要能探测到所有这些的东西。 以下是我目前为止的代码:
phoneregex=re.compile(r'((\(\d{4}\))|(d{4}))?(\s)?(-)?(\d{7})')
tpn=phoneregex.findall('(0245)3952568')
print (mzz)
但我得到了一个wierd输出:
^{pr2}$有什么方法可以让它更高效,得到更好的结果或者完全改变正则表达式?在
附言:抱歉,如果这不够清楚。我想不出其他的写作方法了。在
您需要将正则表达式更改为
^...$
,其中...
是当前的正则表达式。这样电话号码就不会重叠了。在正则表达式有两个主要问题: -每个小部分都有圆括号,这就是为什么在输出中得到“”空字符串和'-'。你应该只在你想返回的部分加上括号(虚线和空格不是这样)。如果你去掉这些,你会得到更合理的结果:
此简化版本适用于您:
^{pr2}$希望这有帮助。在
请多读一点regexp是如何工作的,因为有些行为对于初学者来说可能是不直观的:https://developers.google.com/edu/python/regular-expressions#greedy-vs-non-greedy-optional
相关问题 更多 >
编程相关推荐