我正在尝试使用Java中的正则表达式将字符串中的特殊字符 }}
替换为“”,我厌倦了以下两种方法,但它不起作用。请让我知道这些陈述有什么问题。
请注意,该字符串还将包含我想保留的 }
。目标是仅替换 }}
。
方法一:
String buffer = obj.toJSONString() + ",";
String result = buffer.replaceAll(Pattern.quote("(?<![\\w\\d])}}(?![\\w\\d])"), "");
方法2:
Pattern.compile("(?<![\\w\\d])}}(?![\\w\\d])").matcher(buffer).replaceAll("");
最佳答案
下面的引用
:
String result = buffer.replaceAll(Pattern.quote("(?<![\\w\\d])}}(?![\\w\\d])"), "");
表示将正则表达式视为文字字符串。这是错误的。
如果您只想删除所有 }}
,无论上下文如何:
String result = buffer.replaceAll(Pattern.quote("}}"), "");
如果您确实需要尊重上下文,请不要Pattern.quote(...)
正则表达式!
另一个问题在于您尝试指定字符类的方式。由于\d
是\w
的子集,因此没有必要将它们组合起来。只需这样做:
String result = buffer.replaceAll("(?<!\\w)\\}\\}(?!\\w)"), "");
我不确定是否严格需要引用 }
字符,但如果没有必要,也是无害的。
关于java - 如何使用java中的正则表达式将字符串中的特殊字符}}替换为 "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054576/