输入:我一直(一直一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这(一直一直)里(一直一直)
输出:我一直在这里
输入:我一直(一直一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这(一直一直)里(一直一直)
输出:我一直在这里
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
}4 回答968 阅读
4 回答869 阅读
584 阅读
486 阅读
括号匹配, 正则并不擅长.
我建用代码循环找.
做个变量标记
找到左括号, 变量+1, 找到右括号变量-1, 把变量等于0的位置中间的全删除.