【问题标题】:Goog working regexp to get PHONE from HTML page谷歌工作正则表达式从 HTML 页面获取电话
【发布时间】:2017-09-20 14:42:53
【问题描述】:

我尝试从 HTML 页面获取电话,但我尝试了许多正则表达式和模块,但它不起作用或出错。 示例。

http://www.boat-duesseldorf.com/cgi-bin/md_boot/lib/pub/tt.cgi/Overview_Press.html?oid=58288&lang=2&ticket=g_u_e_s_t

您可以在页面上看到很多手机。例如 +49 (0)211 4560-518。 而且我从 Regexp 库中找到了很好的 regexp,Google 推荐它。

http://www.regexlib.com/REDetails.aspx?regexp_id=2054

文字很多,这里就不赘述了。只有正则表达式。正则表达式应该得到很多电话格式。

^(\+\d{2}[ \-]{0,1}){0,1}(((\({0,1}[ \-]{0,1})0{0,1}\){0,1}[2|3|7|8]{1}\){0,1}[ \-]*(\d{4}[ \-]{0,1}\d{4}))|(1[ \-]{0,1}(300|800|900|902)[ \-]{0,1}((\d{6})|(\d{3}[ \-]{0,1}\d{3})))|(13[ \-]{0,1}([\d \-]{5})|((\({0,1}[ \-]{0,1})0{0,1}\){0,1}4{1}[\d \-]{8,10})))$

所以我得到了带有 Nokorigi 的 HTML 页面 http://www.boat-duesseldorf.com/cgi-bin/md_boot/lib/pub/tt.cgi/Overview_Press.html?oid=58288&lang=2&ticket=g_u_e_s_t 并制作:

/^(\+\d{2}[ \-]{0,1}){0,1}(((\({0,1}[ \-]{0,1})0{0,1}\){0,1}[2|3|7|8]{1}\){0,1}[ \-]*(\d{4}[ \-]{0,1}\d{4}))|(1[ \-]{0,1}(300|800|900|902)[ \-]{0,1}((\d{6})|(\d{3}[ \-]{0,1}\d{3})))|(13[ \-]{0,1}([\d \-]{5})|((\({0,1}[ \-]{0,1})0{0,1}\){0,1}4{1}[\d \-]{8,10})))$/.match.(@html)

pp Regexp.last_match - 但得到零!!!!

我需要好的正则表达式,请推荐 100% 工作的正则表达式或模块。

【问题讨论】:

  • 尝试从您的正则表达式中删除初始^ 和最终$,然后重试。
  • 嗯,请不要乞求。如果有人可以帮助你,他们会的。
  • 我试过删除 ^ $ - 没有帮助。

标签: html ruby regex web-scraping phone-number


【解决方案1】:

我不熟悉 Ruby,但希望对您有所帮助:

require 'net/http'
require 'uri'

site = 'http://www.boat-duesseldorf.com/cgi-bin/md_boot/lib/pub/tt.cgi/Overview_Press.html?oid=58288&lang=2&ticket=g_u_e_s_t'
html = Net::HTTP.get(URI.parse(site))

phones = html.scan(/[^0-9](\+[0-9\(\)\- ]{2,})/)
puts phones

输出:

+49 (0)211 4560-518 
+49 (0)211 4560-87-518 
+49 (0)211 4560-589 
+49 (0)211 4560-87-589 
+49 (0)211 4560-990
+49 (0)211 4560-545

【讨论】:

  • 结果非常有趣。 airliquide.com/connected-innovation/rd +02 +01 +02 +1 302 286 5400 +33 (0) 1 39 07 62 62 +33 (0)5 63 72 69 69 +33 (0) 1 40 96 99 00 +49 69 4011 201 + 49 40 521000 +86 21 5800 5852 +82 2 3019 2578 +81 (0) 298 879 0050 airliquide.com/connected-innovation/… +02 +02 +02 airliquide.com/connected-innovation/… +02 +02 +02
  • 我想我会检查电话是否不超过 3 sybols 我不会使用,否则会。感谢您的正则表达式@jpnkls
  • 是的,因为它太简单了:) 你可以这样做或更改我更新的模式。测试并在您共享的 4 个网址上运行。
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 2021-10-27
  • 1970-01-01
  • 2011-06-26
  • 2016-12-14
  • 1970-01-01
  • 2022-06-14
相关资源
最近更新 更多