Вы звоните matcher.matches()
, который соответствует всей строке темы, поэтому не существует ни одной части, которая не соответствует всей целевой строке, не совпадает, и когда она соответствует, вся целевая строка соответствует, и я хочу, чтобы вы могли получить совпавшее значение.
Как вы спросили в комментарии как получить совпавшее значение? для этой цели вы можете вызвать matcher.group()
после вызова mathcer.matches()
, но как matches()
метод соответствует всей строке, поэтому matches.group()
вернет вам всю строку и, если она не будет соответствовать, вызовет исключение.
, если вы хотите сопоставить часть регулярного выражения, которую вам нужно будет использовать * Если метод 1012 *, то group () вернет только совпадающую часть.
ex
String s = "this is a cat";
Matcher m = Pattern.compile("\\bcat\\b").matcher(s);
m.find();
System.out.println(m.group());
, приведенный выше, код печатает "cat", потому что cat является совпадающей частью, но если вы используете m.matches()
, а затем пытаетесь позвонить m.grounp()
, я брошу Exception in thread "main" java.lang.IllegalStateException: No match found
и целую строку, если математика.
Хорошего дня