java - 如何使用java中的正则表达式将字符串中的特殊字符}}替换为 ""

标签 java regex string

我正在尝试使用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/

相关文章:

java - Eclipse:无法加载JNI共享库 "C:\Windows\system32\..\jre\bin\client\jvm.dll"

java - java中变量的初始化和声明问题

regex - 懒惰,贪婪,还是什么?寻找权威的正则表达式引用

regex - Lua 正则表达式,只有一个匹配项

RegEx - 如何选择第二个逗号及其后的所有内容

c++ - 尝试在 C++ 中使用递归确定字符串的长度

c++ - 连接一个 DWORD 和一个 LPCTSTR

java - 在 Linux 中运行的免费实用程序,用于从 Java 源文件创建 UML 类图

java - Hibernate 应用程序中 OneToMany 关联集合为 null

python - 用连字符/破折号比较两个 Python 字符串