Há uma mudança de comportamento envolvendo correspondência de padrões em expressões regulares no Java SE 17.
Anteriormente, quando uma ou mais classes de caractere aninhadas (circundadas por []) seguidas por uma interseção (&&) eram seguidas por uma classe de caractere não aninhada, a série de classes de caractere aninhadas não era usada. No Java SE 17, essas classes de caractere aninhadas agora são usadas. Por exemplo, dada a expressão comum:
"[A-Z&&[A-Z]0-9]" - O [A-Z] anteriormente não teria sido usado.
A regra sinaliza invocações de chamadas dos métodos a seguir nos quais a expressão comum fornecida contém uma interseção, seguida por uma classe de caractere aninhada, seguida por uma classe de caractere não aninhada:
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)Para obter mais informações sobre essa mudança de comportamento, consulte A correspondência de padrões de expressão comum perde a classe de caractere após o operador de interseção (&&).