为什么我的正则表达式与我要求的电话号码不匹配?

时间:2017-08-06 04:00:02

标签: python regex python-3.x python-3.6

我的书“使用Python自动化无聊的东西”有这个复杂的正则表达式,试图获取给定字符串中的电话号码:

  

((\d{3}|\(\d{3}\))?(\s|-|\.)?\d{3}(\s|-|\.)\d{4}(\s(ext|x|ext.)\s*\d{2,5})?)

222-666-7777分机322 是我认为应该与正则表达式匹配的电话号码,但事实并非如此。我使用的是regex101,这里是我的正则表达式的链接:https://regex101.com/r/OIMqNB/1。有人可以告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:3)

正则表达式是正确的,你刚刚添加了一个打破正则表达式的换行符:

((\d{3}|\(\d{3}\))?(\s|-|\.)?\d{3}(\s|-|\.)\d{4}
(\s*(ext|x|ext.)\s*\d{2,5})?)

在{4}之后点击canc并将其放在你的regex101链接中的同一行,你会看到它按预期工作。

((\d{3}|\(\d{3}\))?(\s|-|\.)?\d{3}(\s|-|\.)\d{4}(\s*(ext|x|ext.)\s*\d{2,5})?)

使用视觉帮助器时常见错误,每次看到一些奇怪的行为时,只需仔细检查你的正则表达式是否在同一行上

答案 1 :(得分:1)

我已经为你修好了,你刚刚放了一个?。 这是新的正则表达式:https://regex101.com/r/OIMqNB/2