omr*_*rid 2 java string design-patterns
我有一个包含令牌的字符串列表.
令牌是:
{ARG:TOKEN_NAME}.
我还有令牌的哈希映射,其中key是令牌,value是我想用令牌代替的值.
当我使用"replaceAll"方法时,我收到错误:
java.util.regex.PatternSyntaxException:非法重复
我的代码是这样的:
myStr.replaceAll(valueFromHashMap , "X");
Run Code Online (Sandbox Code Playgroud)
和valueFromHashMap包含{和}.
我把这个hashmap作为参数.
String.replaceAll()
适用于正则表达式.{n,m}
通常在regexp中重复.
尝试使用\\{
,\\}
如果你想匹配文字括号.
因此,通过以下X
方式替换所有左括号:
myString.replaceAll("\\{", "X");
Run Code Online (Sandbox Code Playgroud)
请参阅此处以了解正则表达式(regexps)以及为什么{
和使用正则表达式}
时必须转义的特殊字符.
正如其他人已经说过的那样,{
也是模式中使用的特殊字符(}
也是).你必须逃避它以避免任何混淆.
手动转义这些可能是危险的(你可能会省略一个并使你的模式完全错误)和乏味(如果你有很多特殊字符).处理这个的最好方法是使用Pattern.quote()
相关问题:
资源: