javascript - 表达式中的Javascript正则表达式匹配表达式?(和\(。*?\))
问题描述
我正在尝试构建一个正则表达式来解析 excel 表达式,非常简单,如下所示:
SUM(1;2;SUM(999);SUM(3;4);SUM(9))
正则表达式应该匹配所有的 SUM 函数,所以我可以稍后解析它们。到目前为止,这就是我所拥有的
(SUM\(.*?\))
但它不匹配 SUM(999),只匹配其他 SUM 函数。我对正则表达式相当陌生,所以我不知道我做错了什么。有谁能够帮我?
谢谢!
解决方案
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)"]
推荐阅读
- c# - WPF - 设置 DataContext 极大地增加了计算时间
- javascript - 检查用户是否对 Google Drive URL 具有“编辑权限”
- python - 如何将一个数字作为输入并在 Python 中打印一个浮点数直到该小数点
- java - iText7 LtvVerification.addVerification 未启用 LTV
- vector - openlayers 5中矢量图层的交互功能
- c# - C# 将两种不同类型的属性序列化为 JSON
- javascript - 为什么在 vuex 存储中推送到数组后未定义数组?
- c - 有效地将可被 3 或 5 整除的数字相加
- python - django 如何显示新添加产品的详细信息页面
- python - 在 Seaborn / Matplotlib 的小提琴图上指定高于和低于中位数的颜色