正则表达式基本URL抓取

时间:2012-04-26 02:09:45

标签: regex

我正在尝试过滤掉一堆网址以找到他们的基本网址,其中不包含www或任何前缀,无法编写表达式来捕获它,但是使用TLD的子集,它会变成一个更复杂的问题。

answers.yahoo.com => yahoo.com
www.google.com => google.com
uk.answers.yahoo.co.uk = > yahoo.co.uk
www.g.se => g.se

有什么建议吗?

我正在使用这个表达式,但是当域名不超过2个字符或域名tld少于2个字符时,它会混乱。

(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$

2 个答案:

答案 0 :(得分:1)

你怎么知道uk.answers.yahoo.co.uk的基础是yahoo.co.uk,但是例如foo.bar.maps.google.com的基础不是maps.google .COM?

答案 1 :(得分:1)

[^\.]*\.(?:co.uk|\w{2,3})$

您需要在正则表达式中添加已知域。

http://regexr.com?30p4r