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
Regex 特殊情况下的括号匹配_Regex - Fatal编程技术网

Regex 特殊情况下的括号匹配

Regex 特殊情况下的括号匹配,regex,Regex,我正在研究一个解析器,在一个表达式中,比如 (-4 + 5)-2 ( -4 + 5 ) - 2 ( -4 + 5 )-2 -4 + 5-2 -4 + 5 - 2 我希望能够 将此表达式中的-4匹配为负数-4 匹配操作员-2和编号2 因此,在上面的表达式中,我希望能够将前三个分为[(,-4,+,5,),-,-2],最后两个分为[-4,+,5,,-,-2] 我试过使用,但是,他们并没有给我多少帮助。我知道,我必须认识到,如果表达式后面有一个右括号,比如-2,则将其作为运算符和数字 适合

我正在研究一个解析器,在一个表达式中,比如

(-4 + 5)-2
( -4 + 5 ) - 2   
( -4 + 5 )-2
-4 + 5-2 
-4 + 5 - 2
我希望能够

  • 将此表达式中的
    -4
    匹配为负数
    -4
  • 匹配操作员
    -2
    和编号
    2
因此,在上面的表达式中,我希望能够将前三个分为[
-4
+
5
-
-2
],最后两个分为[
-4
+
5
-
-2
]


我试过使用,但是,他们并没有给我多少帮助。我知道,我必须认识到,如果表达式后面有一个右括号,比如
-2
,则将其作为运算符和数字

适合与人一起工作。常规语言是上下文无关的。您的表达式不是上下文无关的。(例如,如果将
-
解释为运算符或符号,则这取决于上下文。)因此,它们不构成正则语言,因此无法使用正则表达式解析它们。

我不会使用正则表达式作为解析器,我会使用它生成有效的整数或变量名。然后,我将标记化并确定在
-
之前是否没有整数,然后它是一元负数。就我的观点而言。Regex可能是这个工作的错误工具,你想用什么语言完成什么?如果你把二进制和一元负数当作同一个标记:
-
4
+
5
-
2
?你可以在以后的阶段找到答案。