替换字符串中的所有`[]`字符

时间:2015-01-29 11:39:14

标签: java regex

我有一个字符串。

 String myStrangeString = "java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner";

我想从[]删除所有myStrangeString字符。

我试过了,

myStrangeString.replaceAll("[[]]", "")

但是错误

Return Value :Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
[[]]
   ^
    at java.util.regex.Pattern.error(Pattern.java:1924)
    at java.util.regex.Pattern.clazz(Pattern.java:2493)
    at java.util.regex.Pattern.sequence(Pattern.java:2030)
    at java.util.regex.Pattern.expr(Pattern.java:1964)
    at java.util.regex.Pattern.compile(Pattern.java:1665)
    at java.util.regex.Pattern.<init>(Pattern.java:1337)
    at java.util.regex.Pattern.compile(Pattern.java:1022)
    at java.lang.String.replaceAll(String.java:2162)
    at Test.main(Test.java:8)

如何从[]

中删除myStrangeString

2 个答案:

答案 0 :(得分:6)

你需要逃避那些内部括号。 []是正则表达式中的特殊元字符,表示character class的开头和结尾。因此,要匹配文字[]符号,您必须要逃避它。

myStrangeString.replaceAll("[\\[\\]]", "")

示例:

String myStrangeString = "java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner";
System.out.println(myStrangeString.replaceAll("[\\[\\]]", ""));

输出:

java-1.7, ant-1.6.5, sonar-runner, java-1.7, ant-1.6.5, sonar-runner, java-1.7, ant-1.6.5, sonar-runner

答案 1 :(得分:0)

我认为你正在寻找的答案是

myStrangeString.replaceAll("[\\[\\]]", "");

但是如果你的字符串不大并且性能不是问题,你可以分两步完成...删除所有[然后删除全部]

 myStrangeString.replace("[", "");
 myStrangeString.replace("]", "");