我想知道在java中是否有解析器或库用于提取URL中的二级域(SLD) - 或者无法使用算法或正则表达式来执行相同操作.例如:
URI uri = new URI("http://www.mydomain.ltd.uk/blah/some/page.html");
String host = uri.getHost();
System.out.println(host);
Run Code Online (Sandbox Code Playgroud)
打印:
mydomain.ltd.uk
Run Code Online (Sandbox Code Playgroud)
现在我想做的是强有力地识别SLD("ltd.uk")组件.有任何想法吗?
编辑:我理想地寻找一般解决方案,所以我在"police.uk"中匹配".uk",在"bbc.co.uk"中匹配".co.uk",在"amazon"中匹配".com" .COM".
谢谢
我使用以下内容从URL中提取域:(它们是测试用例)
String regex = "^(ww[a-zA-Z0-9-]{0,}\\.)";
ArrayList<String> cases = new ArrayList<String>();
cases.add("www.google.com");
cases.add("ww.socialrating.it");
cases.add("www-01.hopperspot.com");
cases.add("wwwsupernatural-brasil.blogspot.com");
cases.add("xtop10.net");
cases.add("zoyanailpolish.blogspot.com");
for (String t : cases) {
String res = t.replaceAll(regex, "");
}
Run Code Online (Sandbox Code Playgroud)
我可以得到以下结果:
google.com
hopperspot.com
socialrating.it
blogspot.com
xtop10.net
zoyanailpolish.blogspot.com
Run Code Online (Sandbox Code Playgroud)
前四个案例都很好.最后一个不好.我想要的是:blogspot.com对于最后一个,但它给出了zoyanailpolish.blogspot.com.我究竟做错了什么?
有没有人知道正则表达式匹配Domain.CCTLD?我不想要子域名,只需要"原子域名".例如,docs.google.com不匹配,但google.com确实如此.然而,像.co.ukCCTLD 这样的东西变得复杂.有谁知道解决方案?提前致谢.
编辑:我意识到我还必须处理多个子域,比如john.doe.google.co.uk.现在比以往任何时候都需要解决方案:P.