繁体   English   中英

正则表达式删除方括号之间的除字符和数字以外的所有内容

[英]Regular Expression to remove everything but characters and numbers between Square brackets

我用了

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&)

将我的评论翻译成答案

您可以使用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&)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM