正则表达式能进行递归形式的匹配吗?
做项目的时候遇到这样一个问题
有一个 递归 形式的表达式
基本可以这样描述:
<atom> = "[^(),]"
<and> = "and(" + Exp + "," + Exp + "," + Exp ... + ")"
<or> = "or(" + Exp + "," + Exp + "," + Exp ... + ")"
<not> = "not(" + Exp + ")"
Exp = <and>|<or>|<not>|<atom>
输入的的是一个 Expression 例如
Exp = and (a1, b1, or(c2, d2, and(e3, not(f4), not(g4), h3)), i1, and(j2, k2) )
在分析这个 Expression 之前需要先进行 validation, 目前是手工分析的,
后来想是不是可以通过 Regex 来简化一下,
可惜始终无法进行正确的匹配,是不是 Regex 根本就不支持 递归 匹配?
或者有没有别的办法可以进行 validation 的?
问题点数:200、回复次数:5Top
1 楼taglib(不懂就是不懂,别不懂装懂)回复于 2005-04-04 08:36:45 得分 197
正则表示式一般很难做类似内嵌层次的东西,你的想法也许错了,也许应该用yacc/lex吧,参考
Looking for lex and yacc for Java? You don't know Jack
http://www.javaworld.com/javaworld/jw-12-1996/jw-12-jack.htmlTop
2 楼shan1119(大天使,卐~解!)回复于 2005-04-04 09:05:41 得分 1
我也遇到类似问题,还没想到好的解决不办法,关注!Top
3 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2005-04-04 09:13:49 得分 1
关注,不太懂!
学习学习Top
4 楼qiuzhong1983(老丘)回复于 2005-04-04 09:35:05 得分 1
学习中,UPTop
5 楼telenths(_非法操作_)回复于 2005-04-04 18:35:24 得分 0
不错 是有点类似语法表达式的定义
我也发现 Regex 无法完成 嵌套 的匹配 也许是 Regex 天生的不足 :)
谢谢 taglib(不懂就是不懂,别不懂装懂)Top




