如何递归地标识表达式中的运算符和参数

时间:2014-12-14 23:24:08

标签: regex parsing recursion

我有一个如下表达式;

abs(sum(Max(abs(ListInput)),Min(V1,V2)))

我想取出运算符,这些运算符采用单个参数,这是一个参数列表的符号,存储在其他地方。

例如在上述情况下;

Max(abs(ListInput)) 

是我需要的。

我可以通过标记化并将表达式转换为反向抛光表示法来迭代地完成。

但是当操作员是三元时,事情就会破裂。

IF(10 > Max(Abs(ListInput)),5,MAX(ListInput)) // (IF<EXPRESSION>,TRUEVALUE,FALSEVALUE) ; True value and Valse value can also be an expression.

我试图以递归的方式做到这一点,但无法考虑所有条件。

1 个答案:

答案 0 :(得分:0)

  

我想取出单个参数的运算符   参数列表的符号......

/(abs|sum|max|min)\([^(),]*(\([^(),]*\)[^(),]*)*\)/gi

Online regex tester