我正在尝试构建一个正则表达式来解析excel表达式,这很简单:
SUM(1;2;SUM(999);SUM(3;4);SUM(9))
正则表达式应与所有SUM函数匹配,因此我以后可以解析它们。 到目前为止,这就是我所拥有的
(SUM\(.*?\))
但是它与SUM(999)不匹配,仅与其他SUM函数不匹配。我对正则表达式相当陌生,所以我不知道自己在做什么错。有人可以帮我吗?
谢谢!
答案 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)"]