使用re?从文本中提取电话号码?

2024-05-29 00:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要提取电话号码,但我的正则表达式不能提取所有号码

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']

期望输出:

^{pr2}$

如何改进此表达式以获取所有电话号码?在


Tags: textre表达式phone电话号码out号码compile
2条回答

这将为您提供所需的输出:

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)

但您可能需要对表达式进行微调,具体取决于您想要考虑的电话号码。在

这将查找给定字符串中的所有电话号码

在芬德尔(r'+?(?[1-9][0-9.-()]{8,}[0-9]',文本)

 >>> re.findall(r'[\+\(]?[1-9][0-9 .\-\(\)]{8,}[0-9]', text)
 ['+79082343434   8(912)2342554', '8-923-132-34-23', '+7 982 342 34 34']

基本上,regex列出了这些规则

  1. 匹配的字符串可以以+或(符号)开头
  2. 后面必须是1-9之间的数字
  3. 它必须以0-9之间的数字结尾
  4. 它可以包含0~9(空间)--()在中间。在

相关问题 更多 >

    热门问题