Мне интересно, почему результаты java regex pattern.matcher() и pattern.matches() отличаются при условии того же регулярного выражения и той же строки
String str = "hello+";
Pattern pattern = Pattern.compile("\\+");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println("I found the text " + matcher.group() + " starting at "
+ "index " + matcher.start() + " and ending at index " + matcher.end());
}
System.out.println(java.util.regex.Pattern.matches("\\+", str));
Результат выше:
I found the text + starting at index 5 and ending at index 6
false
Я обнаружил, что использование выражения для соответствия полной строке отлично работает в случае matches(".*\\+")
.