在 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 模式匹配在交集后丢失字符类 (& &) 运算符。