关于电话号码的Python正则表达式

时间:2015-02-26 20:32:11

标签: python regex phone-number

我正在使用以下正则表达式来匹配电话号码(仍在开发,因此不全面):

\(?\+[\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文件/数字一次。

1 个答案:

答案 0 :(得分:1)

你的正则表达式有效:

>>> s = 'blah +442032398869 blah +1 (888) 2572054blah'
>>> re.findall(r'\(?\+[\d _\-\.\)\(\+]{8,25}[\d]{1}', s)
['+442032398869', '+1 (888) 2572054']

您的代码表明您正在尝试匹配html文本中的数字。也许有标记分隔您要匹配的数字部分。或者加号可能实际上是unicode全宽加(U + FF0B)。或者类似的东西。