[英]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.