解析Excel公式“=a(b,c,d)”在 vb.net 中使用正则表达式
我正在尝试解析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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这有帮助吗?
正则表达式解析任意深度的函数
Does this help?
Regex to parse functions with arbitrary depth