Я занимаюсь разработкой робота http, и я разработал это регулярное выражение
(((?:f|ht)tp(?:s)?\\://)?|www)([^/]+)
для обнаружения и извлечения имени хоста из ссылки (href).
Теперь я выложил здесь результаты тестов:
String -> http://www.meloteca.com/empresas-editoras.htm
Returns http://www.meloteca.com
String -> www.meloteca.com/empresas-editoras.htm
Returns www.meloteca.com
String -> /empresas-editoras.htm
Returns empresas-editoras.htm (without the slash)
В этом случае я ожидал, что регулярные выражения не возвращают никакого значения? Почему это происходит?
То же самое, если я попробую со следующей строкой
String -> empresas-editoras.htm
Returns empresas-editoras.htm
Фрагмент кода:
Pattern padrao = Pattern.compile("(((?:f|ht)tp(?:s)?\\://)?|www)([^/]+)");
Matcher mat = padrao.matcher("empresas-editoras.htm");
if(mat.find())
System.out.println("Host->"+mat.group());