使用RegEx

时间:2019-01-04 23:49:29

标签: regex url tld

更新。假设域名是主机名的最后两项,除了第二项是 co <​​/ strong>或 com ,在这种情况下,域名是最后三个项目。如果只有一项->这是域名。

要处理的最少案件:

http://google.com          -> google.com
http://www.google.com      -> google.com
http://abc.cde.google.com  -> google.com
http://google.co.uk        -> google.co.uk
http://www.google.com.au   -> google.com.au
http://www.mysite.info     -> mysite.info
http://www.mysite.business -> mysite.business
http://localhost           -> localhost

此问题的正则表达式沙箱

这是测试和一些开始的正则表达式https://regex101.com/r/AyuW88/3

作为奖励,还有其他几种情况(但是如果regex仅适用于以前的情况,我会很高兴)

http://google.com:8080      -> google.com
http://www.google.com?q=abc -> google.com
http://www.google.com/smth  -> google.com

2 个答案:

答案 0 :(得分:1)

这应该适用于您的简单情况:

 r'([^\/\.]+\.(com|co)\.\w+|[^\/\.]+.\w+)$'

在组1中捕获。您的假设“第二个是co或com除外”已硬编码在正则表达式中。另外,在线上有一个错字:

http://www.google.com.au   -> google.com.ua

应该是“ google.com.au”

答案 1 :(得分:-1)

此正则表达式应解决您的用例。

正则表达式:(?<=http(s)?:\/\/).*

说明:
(?<=http(s)?:\/\/):积极回溯,以查看单词是http还是https。
.*:之后将捕获所有内容。

链接:https://regex101.com/r/fX1fI5/130

希望这会有所帮助。