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
?你可以在以后的阶段找到答案。