我需要提取电话号码,但我的正则表达式不会提取所有电话号码
text = '+79082343434 8(912)2342554, +7 982 342 sdfdsf 34 34 fsf 8-923-132-34-23 +7 982 342 34 34! sdfsd'
r = re.compile(r"\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d")
phone = r.findall(text)
Out[7]: ['+79082343434', '8(912)2342554']
需求输出:
['+79082343434', '8(912)2342554', '8-923-132-34-23', '+7 982 342 34 34']
如何改进此表达式以获取所有电话号码?
最佳答案
这将为您提供所需的输出:
text = '+79082343434 8(912)2342554, +7 982 342 sdfdsf 34 34 fsf 8-923-132-34-23 +7 982 342 34 34! sdfsd'
regex = re.compile("\+?\d[\( -]?\d{3}[\) -]?\d{3}[ -]?\d{2}[ -]?\d{2}")
numbers = re.findall(regex, text)
但是您可能需要稍微调整一下表达式,具体取决于您要考虑的电话号码。