Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何递归地标识表达式中的运算符和参数_Regex_Parsing_Recursion - Fatal编程技术网

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

Regex 如何递归地标识表达式中的运算符和参数,regex,parsing,recursion,Regex,Parsing,Recursion,我有一个如下的表达 abs(sum(Max(abs(ListInput)),Min(V1,V2))) 我想去掉一些运算符,它们接受一个参数,这是一个参数列表的符号,存储在其他地方 例如,在上述情况下 Max(abs(ListInput)) 这就是我需要的 我可以通过标记化表达式并将其转换为反向波兰符号,以迭代的方式完成这项工作 但当运算符是三元运算符时,情况就不一样了 IF(10 > Max(Abs(ListInput)),5,MAX(ListInput)) // (IF<EX

我有一个如下的表达

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.
我试图找到一种递归的方法来实现这一点,但无法考虑所有的条件

我想去掉运算符,它只取一个参数,这是一个 参数列表的符号


你不能用递归下降分析器来做这个吗?使用任何解析器生成器(如bison)都应该很容易实现。@barmar我的目标不是计算表达式,而是获取那些具有单输入依赖关系的运算符。这是类似于lisp的语言吗?@jgr208:看起来像是类似C的语言三元运算符:
/(abs|sum|max|min)\([^(),]*(\([^(),]*\)[^(),]*)*\)/gi