解析Excel公式“=a(b,c,d)”在 vb.net 中使用正则表达式

发布于 2024-10-08 20:39:49 字数 718 浏览 4 评论 0原文

我正在尝试解析Excel公式的参数,例如“=a(b)”、“=a(b,c)”、“=a(b,c,d)”。 我想提取函数名称“a”和参数“b”、“c”和“d”。

SO 上有很多用于解析 HTML 等的示例,但没有专门针对括号的示例。

到目前为止,我已经得到了这个 "=(.+)\(([^,)]*)(,[^,)]*)*\)" 但是当我解析 "=a(b,c,d)" 它在 match(1) 中放入“a”,在 match(2) 中放入“b”,在 match(3) 中放入“,d”。所以“c”丢失了,“d”之前的逗号也很痛苦。

如何使用任意数量的参数解析这样的字符串,最好删除逗号?

解析“=a(b(c),d(e(f)))”的能力会很棒...


编辑:我知道解析器是正确的解决方案,并且我使用了 Devin Cook 出色的 Gold Parser 之前取得了很好的成绩。

然而,我面临的特殊情况是从已知的 Excel 公式中提取参数。具体来说,如果公式包含字符串“=Travel(”,我知道它将有 4 个参数,如果它们不解析也不是问题。这只是一个“很高兴拥有” ?

有人可能会帮助我使用“=a(b,c,d)”、“=a(b,c,d,e)”等的正则表达式吗 没有嵌套括号或逗号的约束?

谢谢!

I am trying to parse the parameters of Excel formulas like "=a(b)", "=a(b,c)", "=a(b,c,d)".
I'd like extract the function name "a" and the parameters "b", "c" and "d".

There are loads of examples on SO to parse HTML and so forth, but none specifically for parentheses.

So far, I've got this "=(.+)\(([^,)]*)(,[^,)]*)*\)" but when I parse "=a(b,c,d)" it puts "a" in match(1), "b" in match(2) and ",d" in match(3). So "c" is lost and the comma before the "d" is a pain.

How can I parse a string like this with an arbitrary number of parameters, ideally dropping the commas?

The ability to parse "=a(b(c),d(e(f)))" would be great...


Edit: I know that a parser is the correct solution and I have used Devin Cook's excellent Gold Parser with great results before.

However, the particular case I'm facing is to extract the arguments from a known Excel formula. Specifically, if the formula contains the string "=Travel(", I know that it will have 4 arguments and if they don't parse it's not a problem. This is simply a "nice to have" function which can fail occasionally without it being an issue.

Could someone possibly help me with a regex for "=a(b,c,d)", "=a(b,c,d,e)", etc., with the constraint that there will be no nested parentheses or commas?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文