我使用了
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&)
a+b+c1
中的+
没有被移除?根据你的问题,它不应该在那里,对吗?如果表达式是a+b+c1 ++++--
,输出应该是什么? - TheLostMindreplaceAll()
之前,似乎应该进行一些预处理。请回答你自己的问题。 - Tim Biegeleisen