下面给出了需要从文本文件中获取的英国电话号码:
07791523634
07910221698
但它只会打印0779152363
,0791022169
跳过第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 :(得分: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})')
感谢那些帮助我解决这个问题的人。