日期:2014-5-20 浏览次数:20359次

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

------解决方案--------------------
探讨
貌似我写这个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