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

Ris*_*hak 2 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";
Run Code Online (Sandbox Code Playgroud)

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

我试过了,

myStrangeString.replaceAll("[[]]", "")
Run Code Online (Sandbox Code Playgroud)

但得到了错误

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)
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能删除[]我的myStrangeString

Avi*_*Raj 6

你需要逃避那些内部支架.[并且]是正则表达式中的特殊元字符,表示字符类的开头和结尾.因此,为了匹配文字[,]符号,你必须要逃避它.

myStrangeString.replaceAll("[\\[\\]]", "")
Run Code Online (Sandbox Code Playgroud)

例:

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("[\\[\\]]", ""));
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)