正则表达式匹配的网站不是电子邮件

时间:2014-05-23 01:30:00

标签: regex web-scraping negative-lookahead negative-lookbehind

我正在尝试在不匹配电子邮件地址的情况下提取网站。

换句话说,如果我的联系部分有

  

电子邮件:a@gmail.com ----网站:www.company.com

我想要www.company.com 没有匹配gmail.com。

到目前为止,我已经尝试了所有我能想到的东西,到目前为止我所做的最好是

\b(?:.(?<!@))+\.\S+\b

但仍然会与a@gmail.com中的gmail.com相匹配。

我承认我的正则表达能力不是最强的,我已经完成了关于负向前瞻/后面等方面的研究,但我仍然不知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

这是JGSoft对域名的表达:

\b(?<!@)((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b

它是国际化和严格的。

我添加了(?<!@)以阻止其在电子邮件名称后匹配域名。

See a demo here