有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正则表达式,用于删除方括号中除字符和数字以外的所有内容

我曾经

value.replaceAll("[^\\w](?=[^\\[]*\\])", "");

在以下情况下,它可以正常工作

[a+b+c1 &$&$/]+(1+b&+c&)

产生:

[abc1]+(1+b&+c&)

但对于以下字符串,它只在第一次运行时删除方括号内的方括号

[a+b+c1 &$&$/[]]+(1+b&+c&)

产生:

[a+b+c1 &$&$/]+(1+b&+c&)

共 (1) 个答案

  1. # 1 楼答案

    将我的评论翻译成答案

    您可以使用以下简单的Java解析来替换:

    String s = "[a+b+c1 &$&$/[]]+(1+b&+c&)";
    int d=0;
    StringBuilder sb = new StringBuilder();
    for (char ch: s.toCharArray()) {
        if (ch == ']')
            d ;
        if (d==0 || Character.isAlphabetic(ch) || Character.isDigit(ch))
            sb.append(ch);
        if (ch == '[')
            d++;
    }
    System.out.println(sb);
    //=> [abc1]+(1+b&+c&)