【发布时间】:2018-08-30 09:26:17
【问题描述】:
我对正则表达式非常陌生,正在寻求帮助以从 HTML 文本中解析出电话号码
在源站点,html 标记非常扭曲并且没有任何我可以使用的唯一选择器。下面是我要解析的可能性列表。
raw = """+49 39291 55-217
02102 7007064
0152 01680970
+49 39291 55-216
02102 3802 22
0800 333004 451-100
+49 221 9937 26950
02151-47974510
+49(0)6105 937 -539
0211/409 2268
+49(0)6105 937 -539
+49211/584-623
0211 58422 2012
+49 (9131) 7-35335
+49 521 9488 2470
+ 49-40-70 70 84 - 0
0211 17 95 99 04
02151-47974327
+49 203 28900 1121
0211 9449-2555
+49 (5 41) 9 98 -2268"""
我尝试了这种模式,但无法从中获得更多信息
import re, requests
Phones = re.findall(re.compile(r'.*?(\(?\d{3}\D{0,3}\d{3}\D{0,3}\d{4}).*?'),raw)
phones
['102 7007064', '152 0168097', '151-4797451', '937 -539\n0211', '937 -539\n+4921', '584-623\n0211', '151-4797432']
非常感谢任何建议或帮助。谢谢
【问题讨论】:
-
以上都有效吗?哪些无效?
-
\D也匹配换行符。您应该将其替换为[-./]? -
@WiktorStribiżew,我对此感到厌烦,但输出并不好,我观察到 2 分。电话号码以 +49 或 0 开头
-
各位,请不要推荐电话验证线程,这是关于从较长的文本中提取电话号码的。
标签: python regex python-3.x regex-greedy