在特殊情况下的括号匹配

时间:2014-01-22 18:30:13

标签: 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] < / p>

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

1 个答案:

答案 0 :(得分:0)

Regexps适合与regular languages合作。常规语言不受上下文限制。您的表达式不是上下文。 (例如,因为如果-被解释为运算符或符号,它取决于上下文。)因此,它们不会形成常规语言,因此您无法使用正则表达式解析它们。