当前位置: 代码迷 >> .NET相关 >> 验证是否符合四则混合运算的正则表达
  详细解决方案

验证是否符合四则混合运算的正则表达

热度:7009   发布时间:2013-02-26 00:00:00.0
求一个验证是否符合四则混合运算的正则表达
求一个验证是否符合四则混合运算的正则表达

------解决方案--------------------------------------------------------
探讨
貌似我写这个2楼的是匹配不出来的。

可以给楼主一个解决方案,如果为了验证是否匹配四则运算,可以用 new DataTable().Compute("表达式")

如果得出结果则匹配成功,若得不了,说明匹配失败

------解决方案--------------------------------------------------------
(?R<E>)(
(?<E>(?R<T>)(?R<E1>))
(?<E1>([+*/-](?R<T>)(?R<E1>))|.{0})
(?<T>(\((?R<E>)\))|(?R<number>))
(?<number>[+|-]?\d*\.?\d+(e[+-]?\d+)?)
){0}
这个可能可以用
可以匹配这样
0123456789.0e-2++.22222e-2--.2e-2/-2*(-2*(+2*+2+(.3)))
变态的四则运算。
原理用的是消除左递归。
E->TE1
E1->(+|-|*|/)TE1|e
T->(E)|NUMBER
  相关解决方案