Javascript Regex匹配表达式内部的表达式? (和\(。*?\))

时间:2018-06-24 22:17:48

标签: javascript regex

我正在尝试构建一个正则表达式来解析excel表达式,这很简单:

SUM(1;2;SUM(999);SUM(3;4);SUM(9))

正则表达式应与所有SUM函数匹配,因此我以后可以解析它们。 到目前为止,这就是我所拥有的

(SUM\(.*?\))

但是它与SUM(999)不匹配,仅与其他SUM函数不匹配。我对正则表达式相当陌生,所以我不知道自己在做什么错。有人可以帮我吗?

谢谢!

https://regex101.com/r/ge6TTJ/1/

1 个答案:

答案 0 :(得分:0)

SUM\([0-9\;]+\)?此正则表达式将向您显示每个SUM表达式,而无需将括号括起来。

代码:

let data = "SUM(1;2;SUM(999);SUM(3;4);SUM(9))";
let match = data.match(/SUM\([0-9\;]+\)?/gm)

结果:

["SUM(1;2;", "SUM(999)", "SUM(3;4)", "SUM(9)"]

如果您想完全填充封闭的括号,可以执行以下操作:

let data = "SUM(1;2;SUM(999);SUM(3;4);SUM(9))";
let match = data.match(/SUM\([0-9\;]+\)?/gm).map(r => r.slice(-1) === ")" ? r : r.concat(")"))

结果:

["SUM(1;2;)", "SUM(999)", "SUM(3;4)", "SUM(9)"]