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是因為您可能會更安全,因為人們可能會錯過輸入+號之前的電話號碼。:)
添加回答
舉報