java正则去除括号内的字符串?
输入:我一直(一直一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这(一直一直)里(一直一直)
输出:我一直在这里
回答:
括号匹配, 正则并不擅长.
我建用代码循环找.
做个变量标记
找到左括号, 变量+1, 找到右括号变量-1, 把变量等于0的位置中间的全删除.
回答:
在 regex101 看了下 java 8
支持的正则特性
但很遗憾,不支持递归匹配或平衡组等特性
所以,不可能只用(一次)正则,就能匹配/替换/去除数量不确定的括号对的
回答:
java 中的正则,不支持一次性去除嵌套括号。
可以通过判断是否还存在括号的方式去除。
public class Test { public static void main(String[] args) {
String s = "我一直(一直(永远)一直)在这(一直一直)里(一直一直)";
while (s.contains("(")) {
s = s.replaceAll("\\([^()]*\\)", "");
}
System.out.println(s);
}
}
回答:
正则比较麻烦,不会java, 写个js的, 采用计数的方法,遇到(就-1,遇到)就+1,只取等于0的字符
const deal = (str) => { let r = '';
let count = 0;
for (const val of str) {
if (val === '(') {
count -=1;
}
if(val === ')'){
count +=1;
}
if (count === 0 && val !== ')') {
r+=val
}
}
return r
}
以上是 java正则去除括号内的字符串? 的全部内容, 来源链接: utcz.com/p/944733.html