我有一个包含标记的字符串列表。
令牌是:
{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