我的书“使用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。有人可以告诉我哪里出错了吗?
答案 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