В Java SE 17 изменен алгоритм проверки соответствия шаблону в регулярных выражениях.
Ранее, если за одним или несколькими составными классами символов (в квадратных скобках []) следовало пересечение (&&),
за которым следовал не составной класс символов, последовательность составных классов
символов не использовалась. В Java SE 17 эти составные классы символов используются. Например, в
следующем регулярном выражении:
"[A-Z&&[A-Z]0-9]" - класс [A-Z] ранее не учитывался.
Правило отмечает вызовы следующих методов, если в них регулярные выражения содержат пересечения, за которым следует составной класс символов, за которым следует не составной класс символов:
java.util.regex.Pattern.compile(java.lang.String)java.util.regex.Pattern.compile(java.lang.String, int)java.util.regex.Pattern.matches(java.lang.String, java.lang.CharSequence)java.lang.String.matches(java.lang.String)java.lang.String.replaceAll(java.lang.String, java.lang.String)java.lang.String.replaceFirst(java.lang.String, java.lang.String)java.lang.String.split(java.lang.String)java.lang.String.split(java.lang.String, int)Дополнительные сведения об этом изменении поведения см. в разделе RegEx Pattern Matching Fтеряет символьный класс после пересечения (& &) Operator.