代码之家  ›  专栏  ›  技术社区  ›  Jalal

需要正则表达式来检测简单的数学表达式

  •  1
  • Jalal  · 技术社区  · 16 年前

    a = 1 + 2
    b = 2.2
    a = b + 5.5
    a = b - -5.5
    a = -1 + 2
    a = -2.4
    a = 3.5 / 0.2 + 1
    a = 3 * -2.1
    

    注意:运算符优先级不重要!

    我试着用下面的表达法,但是我什么都没有!!!

    for digits: ^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$
    for operators: [-]|[+]|[*]|[/]
    for variables: [a-z]+|[A-Z]+
    

    我将这些表达式放在C#string变量中,并使用.net Regex.Matches(...) 找到匹配的。但我什么都没有!

    3 回复  |  直到 16 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    对于正则表达式来说,这不是一项很好的工作。如果你想计算真正的数学表达式,你就不能想出一个可以处理所有情况的正则表达式。正如Carl Norum所说,关于为什么不能解析 html with regex .

        2
  •  1
  •   Tony Abrams    16 年前

    for digits: ((-[0-9]|[0-9])(\.[0-9])|[0-9])
    for operators: (-|\+|\*|\/)
    for variables: ([a-z]|[A-Z])
    

    在调节器中测试时,这些看起来很好。

    编辑

    第一个可能有点“马虎”,我没时间吃午饭了

        3
  •  0
  •   ErnieL    16 年前

    即使是简单的事情也很难写出好的正则表达式。从经过验证的表达式开始,并根据需要进行修改:

    http://regexlib.com

    如果你找不到一个例子,他们有一个专门讨论此类问题的论坛。