работает следующий код:
String str= "test with foo hoo";
Pattern pattern = Pattern.compile("foo");
Matcher matcher = pattern.matcher(str);
if(matcher.find()) { ... }
Но этот пример не:
if(Pattern.matches("foo", str)) { ... }
И ни одна из этих версий:
if(str.matches("foo")) { ... }
В реальном коде str - это фрагмент текста с несколькими строками, если средство сопоставления обрабатывает его по-разному, также в реальном коде, замена будет использоваться для замены строки текста.
В любом случае, странно, что он работает в первой версии, но не в двух других.
Редактировать
Хорошо, я понимаю, что поведение в первом примере такое же, если вместо matcher.find
используется if(matcher.matches()) { ... }
. Я все еще не могу заставить его работать для многострочного ввода, но я все равно придерживаюсь решения Pattern.compile
/ Pattern.matcher
.