输入:我一直(一直一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这(一直一直)里(一直一直)
输出:我一直在这里
输入:我一直(一直一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这里
输出:我一直在这里
输入:我一直(一直(永远)一直)在这(一直一直)里(一直一直)
输出:我一直在这里
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
}
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
括号匹配, 正则并不擅长.
我建用代码循环找.
做个变量标记
找到左括号, 变量+1, 找到右括号变量-1, 把变量等于0的位置中间的全删除.