[英]Why does String.replaceAll() work differently in Java 8 from Java 9?
很可能是由于JDK-6609854和JDK-8189343报告了负嵌套字符类处理(在您的示例中[^[0-9-]]
)。 此行为在9和10中得到修复,但修复程序未向后移植到8. Java 8的错误解释为:
在Java中,否定并不适用于任何出现在嵌套的
[brackets]
所以
[^c]
与“c”不匹配,正如您所期望的那样。
[^[c]]
匹配“c”。 不是我所期待的。
[[^c]]
与“c”不匹配对于范围或属性表达式也是如此 - 如果它们在括号内,则在out级别的否定不会影响它们。
[^az]
与[^[az]]
相反
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.