【问题标题】:How to replace all square brackets in string using Java replaceAll(regex,replacement) method [duplicate]如何使用Java replaceAll(regex,replacement)方法替换字符串中的所有方括号[重复]
【发布时间】:2015-10-25 21:30:21
【问题描述】:

我正在学习 java,我想使用 java RegExp 将所有 [] and {} 替换为空格

我试过了,

final String data = "{a:b,c:d,e:[f,g,h]}";
System.out.println(data.replaceAll("[{}[]]", " ")); 

但我得到java.util.regex.PatternSyntaxException: Unclosed character class near index 5 [{}[]]. ^

我认为java认为第5位的]RegExp的终点。

那么我怎样才能避开那个方括号并将所有[]{} 替换为空格

【问题讨论】:

标签: java regex


【解决方案1】:

你必须在[](字符类)中转义[]

System.out.println(data.replaceAll("[{}\\[\\]]", " "));

【讨论】:

  • 所以双斜杠用于转义正则表达式中的语法字符?或者它可以与任何字符串一起使用?我认为通常我们使用 `` 单斜杠从字符串中转义字符。不是吗?
  • 是的,我使用/ 作为分隔符的其他语言只使用单斜杠。但是在 " 的情况下,您需要再转义一次反斜杠。否则它将被读取为转义序列。
【解决方案2】:

您需要使用反斜杠转义特殊字符 []

System.out.println(data.replaceAll("[{}\\[\\]]", " "));

【讨论】:

    猜你喜欢
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2012-09-21
    • 2019-01-13
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多