【发布时间】:2015-02-26 20:32:11
【问题描述】:
我正在使用以下正则表达式来匹配电话号码(仍在开发中,因此不全面):
\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}
当我使用 regex101 或 regexpal.com 对其进行测试时,它同时匹配 +442032398869 和 +1 (888) 2572054。
但是,当我使用 Python 脚本运行它时,+442032398869 不匹配。有什么原因,我该如何解决?
额外问题:根据我的阅读,我应该在第一个字符集中进行尽可能多的转义。如果我删除 .或 + 例如?
编辑:
def get_numbers_in_text(html_string):
pattern = r'\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}
reg = re.compile(pattern,re.IGNORECASE)
numbers = reg.findall(text)
return numbers
这两个数字在两个不同的 HTML 文件中,所以我调用了两次函数,每个 HTML 文件/数字调用一次。
【问题讨论】:
-
请提供代码,如何在脚本中运行这个正则表达式?
-
它对我来说很好用。
+442032398869与您给定的模式匹配。 -
它对我很有效:repl.it/cHr.
-
你很可能使用了错误的 're' 方法。
-
除非您只解析/验证来自一个国家/地区的电话号码,否则您可能需要查看
libphonenumber,分别查看其 Python 端口python-phonenumbers。
标签: python regex phone-number