flex规则段是用正则表达式说明的,另外也有他自己的一些格式:
1.语系对正则表达式的影响:
不同语系,字符的种类,数量,排序各不相同,
LANG=C时:字母和数字的顺序是01234...ABCD...Zabc...z,[A-D]指从A,B,C,D中取一个字符。
LANG=zh_CN时:字母和数字的顺序是01234...aAbBcCdD...zZ,[A-D]指从A,b,B,c,C,d,D中取一个字符。
2.正则表达式字符
^x:以x开头的一整行。
x&:以x结尾的一整行。
.:除换行符外的任一字符。
\:转义,去除特殊符号的特殊意义。
[list]:从字符集中取任意一个字符,例:[abc]表示从abc中取任意一个,[ABe-h]表示取A或B或e到h中任意一个。[]中,有些情况下特殊符号会失去特殊意义,如[-abc],-在最前或最后都会失去连字的意义,[a|c]中,|失去‘或’的意义而变成一个普通字符,[a^b]中^失去非的意义。
[n1-n2]:[a-g]表示从a到g中取任一一个字符,注意语系影响。
[^list]:与[n1-n2]相反,取list中不包含的一个字符。
\[n,m\]:连续n到m个前一字符,例x\{2,4\},xx,xxx,xxxx匹配。
*:重复0个或多个前面的字符。
+:重复一个或多个前面的字符;例如o+,o,oo,ooo等匹配。