2017-08-29 73 views
-1

下面給出的是英國的電話號碼需要從文本文件獲取:Python的正則表達式英國數

07791523634 
07910221698 

但只打印07791523630791022169跳過11字符。

而且它產生這樣(「」) 防爆不必要的值:'', '07800 854536' 下面是我用正則表達式:

phnsrch = re.compile(r'\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{5}|\d{3}[-\.\s]??\d{4}[-\.\s]??\d{4}|\d{5}[-\.\s]??\d{3}[-\.\s]??\d{3}|/^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$/|') 

需要幫助的,沒有任何不必要的符號

獲取全套11號
+0

請發佈您想要的輸出。 – Ajax1234

+2

如果電話號碼是簡單的形式,'07 \ d {9}'就足夠了,所以我猜你有一些複雜的輸入用破折號等。如果這對查找是必要的,請給出示例輸入。 –

+0

這完全取決於你想處理多少特殊情況。 Dashhes允許?點?等等 – Solaxun

回答

0

我覺得你的正則表達式是太長,可以更容易,試試這個正則表達式來代替:

^(07\d{8,12}|447\d{7,11})$ 
0

終於想通了解決匹配低於英國的電話號碼:

07540858798 
0113 2644489 
02074 735 217 
07512 850433 
01942 896007 
01915222200 
01582 492734 
07548 021 475 
020 8563 7296 
07791523634 

re.compile(r'\d{3}[-\.\s]??\d{4}[-\.\s]??\d{4}|\d{5}[-\.\s]??\d{3}[-\.\s]??\d{3}|(?:\d{4}\)?[\s-]?\d{3}[\s-]?\d{4})') 

感謝那些誰這個問題幫我。