То, как вы написали свое регулярное выражение, будет работать с Matcher.find (), потому что find ищет везде регулярное выражение во всей входной строке.
Если вы хотите, чтобы ваше регулярное выражение полностью соответствовало, вам нужно немного изменить свое регулярное выражение и добавить его в начало. * В начале регулярного выражения что-то вроде этого,
.*_New=[A-Z]{2}_(\\w{7})_(JAVA.+)
Обратите внимание, что в java вам нужно экранировать \
символ до \\
Попробуйте с этим кодом, и он напечатает Matches
public static void main(String[] args) {
String s = "Java (simple) _New=AB_U748490_JAVA47BYH";
Pattern p = Pattern.compile(".*_New=[A-Z]{2}_(\\w{7})_(JAVA.+)");
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println("Matches");
} else {
System.out.println("Didn't match");
}
}
Или же вы можете использовать метод find () для объекта Matcher, если вы не хотите изменять свое регулярное выражение.
Надеюсь, это поможет.