我有一个包含标记的字符串列表。
令牌是:


{ARG:token_name}。


我也有标记的哈希图,其中key是标记,value是我要用来替换标记的值。

当我使用“ replaceAll”方法时,出现错误:


java.util.regex.PatternSyntaxException:非法重复


我的代码是这样的:

myStr.replaceAll(valueFromHashMap , "X");


并且valueFromHashMap包含{和}。

我得到此哈希图作为参数。

最佳答案

正如其他人已经说过的那样,{是模式中使用的特殊字符(}也是)。
您必须对其进行转义以避免任何混乱。

手动转义这些符号可能很危险(您可能会忽略其中一个,使您的模式完全错误),并且很繁琐(如果您有很多特殊字符)。
解决此问题的最佳方法是使用Pattern.quote()



相关问题:


How to escape a square bracket for Pattern compilation
How to escape text for regular expression in Java


资源:


Oracle.com - JavaSE tutorial - Regular Expressions

07-24 09:47
查看更多