【发布时间】: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