如何使用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不想删除的一个多余的字符
15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片