3 回答
TA贡献1779条经验 获得超6个赞
在您的正则表达式中,单词边界 \b
在空格和加号之间不匹配。
您可以做的是匹配07
或+44
,然后匹配一个数字或空白一次或多次,[\d ]+
然后\d
匹配一个数字以使末尾不匹配空白,并在末尾添加单词边界\b
。
(?:07|\+44)[\d ]+\d\b
TA贡献1818条经验 获得超11个赞
您应该能够通过从字符串中删除预期的“嘈杂字符”来覆盖所有情况,并将正则表达式简化为just "(07|\D44)\d{9}"。在哪里:
(07|\D44)搜索以07和44开头的非数字字符的起始数字。 \d{9}搜索其余的9位数字。
您的代码应如下所示:
cleansnippet = snippet.replace("-","").replace(" ","").replace("(0)","")...
re.search("(07|\D44)\d{9}", cleansnippet)
将其应用到您的输入中将检索到以下内容:
<_sre.SRE_Match object; span=(14, 25), match='07700900432'>
<_sre.SRE_Match object; span=(16, 27), match='07700930710'>
<_sre.SRE_Match object; span=(25, 37), match='+44770090019'>
<_sre.SRE_Match object; span=(10, 22), match='+44770090099'>
希望能有所帮助。
Pd .:“ \before”+表示您正在专门寻找+符号,而不是前一个元素的“ 1个或多个”。
我提议\D44而不是的唯一原因\+44是因为您可能会更安全,因为人们可能会错过输入+号之前的电话号码。:)
添加回答
举报