Я хочу проанализировать домен URL (без 'www') с regex и вернуть его.Существует много примеров для этого в stackoverflow, но они не обеспечивают решение для всех случаев ниже или некоторые из них имеют ненужные функции.Мои случаи:
http://www.google.co.uk pass
http://www.google.co.uk pass
http://google.com.co.uk pass
same for https pass
google.co.uk pass
www.google.co.uk pass
и все должны возвращать только часть домена google.co.uk Нет необходимости в таких ссылках, как 101.34.24 .. или запуск для fps и т. Д... Только допустимые форматы ввода указаны выше.И я проверяю URL с помощью регулярного выражения: ^(https?:\/\/)?(www\.)?([\w]+\.)+[\w]{2,63}\/?$
, и он работает хорошо, но я не знаю, как его анализировать.
Примечание: я был бы рад, если вы не порекомендуете классы URI или URL и их методы дляразбирать домен автоматически, например:
private String parseUrl(String url) throws URISyntaxException {
if (url.startsWith("http:/")) {
if (!url.contains("http://")) {
url = url.replaceAll("http:/", "http://");
}
} else if (url.startsWith("https:/")) {
url = url.replaceAll("https:/", "http:/");
} else {
url = "http://" + url;
}
URI uri = new URI(url);
String domain = uri.getHost();
return domain.startsWith("www.") ? domain.substring(4) : domain;
}
Этот код также отлично работает, но мне нужно регулярное выражение , а не этот.