Моя цель состоит в том, чтобы соответствовать таким URL-адресам:
url.com
my.url.com
my.extended.url.com
a.super.extended.url.com
и так далее ...
Итак, я решил построить регулярное выражение так, чтобы в начале и конце URL-адреса присутствовали буква или число, а также иметь бесконечное количество «поддоменов» с буквенно-цифровыми символами и точкой. Например, в «my.extended.url.com» «m» из «my» является первым классом регулярного выражения, «m» из «com» является последним классом регулярного выражения, а «y.», «продлен.» и "URL". являются вторым классом регулярных выражений.
Используя шаблон и тему в приведенном ниже коде, я хочу, чтобы метод find возвращал мне значение false, поскольку этот URL-адрес не должен совпадать, но он использует 100% ЦП и, похоже, остается в бесконечном цикле.
String subject = "www.association-belgo-palestinienne-be";
Pattern pattern = Pattern.compile("^[A-Za-z0-9]\\.?([A-Za-z0-9_-]+\\.?)*[A-Za-z0-9]\\.[A-Za-z]{2,6}");
Matcher m = pattern.matcher(subject);
System.out.println(" Start");
boolean hasFind = m.find();
System.out.println(" Finish : " + hasFind);
Который только печатает:
Start
Я не могу воспроизвести проблему с помощью тестеров регулярных выражений.
Это нормально? Проблема связана с моим регулярным выражением?
Может ли это быть из-за моей версии Java (1.6.0_22-b04 / JVM 64 bit 17.1-b03)?
Заранее спасибо за помощь.