首页 > 解决方案 > 表达式中的Javascript正则表达式匹配表达式?(和\(。*?\))

问题描述

我正在尝试构建一个正则表达式来解析 excel 表达式,非常简单,如下所示:

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

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

(SUM\(.*?\))

但它不匹配 SUM(999),只匹配其他 SUM 函数。我对正则表达式相当陌生,所以我不知道我做错了什么。有谁能够帮我?

谢谢!

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

标签: javascriptregex

解决方案


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)"]

推荐阅读