Extract main domain name from a given url
Using Guava library, we can easily get domain name:
InternetDomainName.from(tld).topPrivateDomain()
Refer API link for more details
https://google.github.io/guava/releases/14.0/api/docs/
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/net/InternetDomainName.html
Obtain the host through REGEX is pretty complicated or impossible because TLD's don't obey to simple rules but are provided by ICANN and change in time.
You should use instead the functionality provided by JAVA library like this:
URL myUrl = new URL(urlString);
myUrl.getHost();
This is 2013 and solution I found is straight forward:
System.out.println(InternetDomainName.fromLenient(uriHost).topPrivateDomain().name());