Я пытался выполнить сравнительно простое сопоставление регулярных выражений в Java 1.4.2. Мне намного удобнее работать с Perl. Вот что происходит:
Я пытаюсь найти соответствие / ^ / из ""
Я пытаюсь:
Pattern myPattern= Pattern.compile("^<foo>");
Matcher myMatcher= myPattern.matcher("<foo><bar>");
System.out.println(myMatcher.matches());
И я получаю «ложь»
Я привык говорить:
print "<foo><bar>" =~ /^<foo>/;
, который действительно возвращает истину.
После долгих поисков и экспериментов я обнаружил этот , который сказал:
«Метод String дополнительно оптимизирует критерии поиска, помещая невидимое ^ перед шаблоном и $ после него».
Когда я пытался:
Pattern myPattern= Pattern.compile("^<foo>.*");
Matcher myMatcher= myPattern.matcher("<foo><bar>");
System.out.println(myMatcher.matches());
тогда возвращается ожидаемое истина. Я не хочу эту модель, хотя. Завершение. * Не должно быть необходимо.
Затем я обнаружил метод Matcher.useAnchoringBounds (boolean). Я думал, что прямое указание не использовать границы привязки будет работать. Это не так. Я попытался выдать
myMatcher.reset();
на случай, если мне понадобится очистить его после отключения атрибута. Неудачно. Впоследствии вызов .matches () по-прежнему возвращает false.
Что я упустил из виду?
Edit:
Ну, это было легко, спасибо.