如何使用Java replaceAll(regex,replacement)方法替换字符串中的所有方括号[重复]

Posted

技术标签:

【中文标题】如何使用Java replaceAll(regex,replacement)方法替换字符串中的所有方括号[重复]【英文标题】:How to replace all square brackets in string using Java replaceAll(regex,replacement) method [duplicate] 【发布时间】: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的终点。

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

【问题讨论】:

供您参考,docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html 【参考方案1】:

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

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

【讨论】:

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

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

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

【讨论】:

以上是关于如何使用Java replaceAll(regex,replacement)方法替换字符串中的所有方括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有regex的ReplaceAll删除了Java不想删除的一个多余的字符

Java如何清除空格?

15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片

Java中replace和replaceall的区别

String.replaceAll()方法替换字符串中的反斜杠()

JAVA中string.replace和string.replaceAll的区别及用法