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

回到顶部