关于正则表达式:Java替换字符串中的所有方括号

Java replace all square brackets in a string

我想把方括号从绳子上取下来,但我不知道怎么做。

1
2
3
4
5
String str ="[Chrissman-@1]";
str = replaceAll("\\[\\]","");

String[] temp = str.split("-@");
System.out.println("Nickname:" + temp[0] +" | Power:" + temp[1]);

但我的结果是:【克里斯曼1】方括号不能去掉。

我尝试使用不同的regex:"\\[.*?\\]""\\[\\d+\\]"但结果是一样的,方括号仍然附着在字符串上。

编辑:

我试过:

1
2
str.replaceAll("]","");
str.replaceAll("[","");

现在我得到:

1
2
3
4
5
6
7
8
9
10
11
Exception in thread"Thread-4" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
[
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)

replaceall方法正在尝试匹配不在String中的字符串文字[],请尝试单独替换这些项。

1
2
String str ="[Chrissman-@1]";
str = str.replaceAll("\\[","").replaceAll("\\]","");


您的regex只匹配(并删除)后面的方括号。改为使用:

1
str = str.replaceAll("\\[|\\]","");

如果只想用中间的内容替换括号对,可以使用以下方法:

1
str = str.replaceAll("\\[(.*?)\\]","$1");


您目前正在尝试删除确切的字符串[]-两个方括号之间没有任何内容。相反,您希望删除所有[,并单独删除所有]

我个人会避免在这里使用replaceAll,因为它会导致更多的混乱,因为regex部分-我会使用:

1
String replaced = original.replace("[","").replace("]","");

如果您真的想进行完全模式匹配,那么只使用使用正则表达式的方法。当您只想替换所有出现的固定字符串时,replace更易于阅读和理解。

(有其他方法可以使用正则表达式形式并真正匹配模式,但我认为上面的代码要简单得多。)


使用regex [\\[\\]]。-

1
2
3
String str ="[Chrissman-@1]";
String[] temp = str.replaceAll("[\\[\\]]","").split("-@");
System.out.println("Nickname:" + temp[0] +" | Power:" + temp[1]);

输出-

1
Nickname: Chrissman | Power: 1


您也可以这样做:

1
2
3
4
String data ="[yourdata]";
String regex ="\\[|\\]";
data  = data .replaceAll(regex,"");
System.out.println(data);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   Use this line:) String result = strCurBal.replaceAll("[(" what ever u need to remove")]","");

    String strCurBal ="(+)3428";
    Log.e("Agilanbu before omit", strCurBal);
    String result = strCurBal.replaceAll("[()]",""); // () removing special characters from string
    Log.e("Agilanbu after omit", result);
   
    o/p :
    Agilanbu before omit : (+)3428
    Agilanbu after omit :  +3428

    String finalVal = result.replaceAll("[+]",""); // + removing special characters from string
    Log.e("Agilanbu finalVal ", finalVal);
    o/p
    Agilanbu finalVal : 3428
           
    String finalVal1 = result.replaceAll("[+]","-"); // insert | append | replace the special characters from string
    Log.e("Agilanbu finalVal ", finalVal1);
    o/p
    Agilanbu finalVal : -3428  // replacing the + symbol to -


1
2
3
4
5
6
7
8
9
10
11
12
String str, str1;
Scanner sc = new Scanner(System.in);

System.out.print("Enter a String :");
str = sc.nextLine();


str1 = str.replaceAll("[aeiouAEIOU]","");



System.out.print(str1);