英国数字的Python正则表达式

时间:2017-08-29 23:29:14

标签: python regex

下面给出了需要从文本文件中获取的英国电话号码:

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个数字,而不需要任何不必要的符号

2 个答案:

答案 0 :(得分:0)

我认为你的正则表达式太长了,而且可以更容易,试试这个正则表达式:

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

答案 1 :(得分: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})')

感谢那些帮助我解决这个问题的人。