Это выглядит как InternetDomainName.topPrivateDomain () делает точно то, что вы хотите.Guava поддерживает список общедоступных суффиксов (основанный на списке Mozilla на publicsuffix.org), который он использует для определения того, что является общедоступной суффиксной частью хоста ... верхний частный домен - это общедоступный суффикс плюс его первый дочерний элемент.
Вот краткий пример:
public class Test {
public static void main(String[] args) throws URISyntaxException {
ImmutableList<String> urls = ImmutableList.of(
"http://example.google.com", "http://google.com",
"http://bing.bing.bing.com", "http://www.amazon.co.jp/");
for (String url : urls) {
System.out.println(url + " -> " + getTopPrivateDomain(url));
}
}
private static String getTopPrivateDomain(String url) throws URISyntaxException {
String host = new URI(url).getHost();
InternetDomainName domainName = InternetDomainName.from(host);
return domainName.topPrivateDomain().name();
}
}
Запуск этого кода печатает:
http://example.google.com -> google.com
http://google.com -> google.com
http://bing.bing.bing.com -> bing.com
http://www.amazon.co.jp/ -> amazon.co.jp