提取多个括号之间的文本



我在下面有这些变量:

let x = '5(2+1(3(4-1))';
let y = [];

我需要提取()之间的任何字符串pusharray输出如下:

console.log(y); // Array should be y[4-1,3,2+1,5]

我该如何解决这个问题?

试试这个正则表达式

let x = '5(2+1(3(4-1))';
let y = [];
let regex = /(?(d+([+-]d+)?)/gm;
let m
while ((m = regex.exec(x)) !== null) {
y.push(m[1])
}
y = y.reverse()
console.log(y)

这可以通过递归地应用正则表达式获取并替换内部的most()对,直到只剩下最后5个,或者通过构建一个真正的解析器来实现。

根据输入的外观,regex可能无法工作。

但是没有简单的解决办法,这取决于你得到的是什么格式。

最新更新