Python phone 个数字的正则表达式
Python regex on phone numbers
我正在使用以下正则表达式来匹配 phone 数字(仍在开发中,因此不全面):
\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}
当我用 regex101 或 regexpal.com 测试它时,它匹配 +442032398869 和 +1 (888) 2572054。
然而,当我 运行 它与我的 Python 脚本时,+442032398869 不匹配。这是什么原因,我该如何解决?
奖励问题:根据我的阅读,我应该在第一个字符集中进行尽可能多的转义。 Python 如果我删除 .或 + 例如?
编辑:
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 文件/数字调用一次。
您的正则表达式有效:
>>> s = 'blah +442032398869 blah +1 (888) 2572054blah'
>>> re.findall(r'\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}', s)
['+442032398869', '+1 (888) 2572054']
您的代码表明您正在尝试匹配 html 文本中的数字。也许有标记分隔您尝试匹配的数字部分。或者加号实际上是一个 unicode 全角加号 (U+FF0B)。或者其他类似的东西。
我正在使用以下正则表达式来匹配 phone 数字(仍在开发中,因此不全面):
\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}
当我用 regex101 或 regexpal.com 测试它时,它匹配 +442032398869 和 +1 (888) 2572054。
然而,当我 运行 它与我的 Python 脚本时,+442032398869 不匹配。这是什么原因,我该如何解决?
奖励问题:根据我的阅读,我应该在第一个字符集中进行尽可能多的转义。 Python 如果我删除 .或 + 例如?
编辑:
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 文件/数字调用一次。
您的正则表达式有效:
>>> s = 'blah +442032398869 blah +1 (888) 2572054blah'
>>> re.findall(r'\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}', s)
['+442032398869', '+1 (888) 2572054']
您的代码表明您正在尝试匹配 html 文本中的数字。也许有标记分隔您尝试匹配的数字部分。或者加号实际上是一个 unicode 全角加号 (U+FF0B)。或者其他类似的东西。