求一个验证是否符合四则混合运算的正则表达
求一个验证是否符合四则混合运算的正则表达
------解决方案--------------------
------解决方案--------------------
(?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