0

我正在尝试过滤掉一堆 url 以找到它们的基本 url,其中不包括 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})$
4

2 回答 2

1

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

于 2012-04-26T02:12:28.660 回答
1
[^\.]*\.(?:co.uk|\w{2,3})$

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

http://regexr.com?30p4r

于 2012-04-26T02:15:19.170 回答