用正则表达式匹配字符串"y=x+z*ln(m+n)"中所有的参数,也就是所知匹配到y,x,z,m,n
如题,,用正则表达式匹配字符串"y=x+z*ln(m+n)"中所有的参数,也就是所知匹配到y,x,z,m,n,,,其中我搞不定的是那个怎样让ln不匹配,,我希望用一个非来匹配这些参数,,因为这些参数可以是除了+,-*,/,ln,(,)外的其他任意字符当然不包括像.,这些符号。我在网上找了一下发现?!这个可以用来排除一个字符串但奈何功力不够,写不出能用的表达式,,所以只能到论坛求组各位了。。。 正则表达式
[解决办法]
提醒:在词法分析领域,正则表达式不是万能的;有限状态自动机才是万能的。
参考《编译原理》词法分析 有限状态自动机
[解决办法]
y=x+z*ln(m+n)
你就自己解析好了,状态机其实说白了就是:
1. 你读到=,说明y有了,接下去是x.
2. 读到+,说明x有了,接下去是z
3. 读到*,说明z有了,接下去是ln,直接读到(
4. 然后就是解析m+n,跟上述过程一样,直到字符串结束。