看过很多讲正则表达式优先级的文章 ,总觉得对Lex来说讲的不完全,一直未找到一个完全的优先级文档,索性自己总结了一份,供使用Lex的弟兄参考
Lex中正则表达式优先级表:
优先级
运算符
说明
1
转义符
2
“ () []
双引号、括号和中括号
3
* + ? {n} {n,} {n,m} {name}
限定符和预定义的名字
4
^ $ \000 char <<EOF>>
定位符号和序列
5
| /
或, 上下文
特别说明:
1、同优先级全部是左结合的
2、在[]中,只有\仍然保留其转义符的意义,其它特殊符号均失去其特殊性,[]中增加了两个符号“- ^”,这两个符号在[]的优先级大于[],出了[]就变成一般的序列符号
3、在“”对中,只有\保留有特殊含义
4、{name}中的name如果在定义段中定义过,{name}作为预定义的名字使用,如果name未定义过,则{name}仅仅是{name}的一个序列,{不用转义,当然你用了转义符也没问题
以上是我在使用中的总结,请指正,谢谢!