【发布时间】:2017-11-05 11:29:35
【问题描述】:
我正在开发一个自定义数学表达式计算器,但在解析嵌套条件表达式时遇到了问题:
IIF("M"="M",(IIF(100 < 50,(IIF(2 > 0.45,2,1)),(IIF(2 > 0.45,4,3)))),(IIF(100 < 46,(IIF(2 > 0.45,2,1)),(IIF(2 >0.45,4,3)))))
我想做的是用逗号分割IIF函数以获得它的参数:
Dim condition = "M"="M"
Dim truePart = (IIF(100 < 50,(IIF([2 > 0.45,2,1)),(IIF(2 >0.45,4,3))))
Dim falsePart = (IIF(100 < 46,(IIF(2 > 0.45,2,1)),(IIF(2 >0.45,4,3)))))
目前我正在使用正则表达式来解析单个 IIF 函数,方法是获取括号内的内容并用逗号分隔:
\((.*?)\)
显然这不适用于这样的表达式,因为它会在第一个右括号处停止,因此我考虑使用它来获取所有其他字符:
\((.*?)\).*
但现在我不确定如何拆分它,因为不再使用逗号。
【问题讨论】:
-
如果要解析就写解析器..
-
我没有从这种答案中受益。我确实写了一个解析器,但是我在解析上面指定的表达式类型时遇到了问题。
-
好吧,你可以使用this 之类的东西,但它看起来不正确。看起来不适合正则表达式。
-
我想得到第一个 IIF 函数的三个参数(条件、truePart、falsePart),就像我上面写的一样。
-
附注使用
IF运算符,而不是IIF...