flex中的正则表达式匹配任何单词除外

时间:2013-05-25 22:07:08

标签: regex yacc flex-lexer lexical-analysis

我在Flex中使用此正则表达式来查找每个2个字母的大写字词:

[A-Z]{2}        printf("Found %s", yytext);

但是我如何打印除SN ??

之外的每个单词

谢谢!

1 个答案:

答案 0 :(得分:4)

在字符串NA上使用时,正则表达式也会匹配子字符串,例如SANASA

您需要使用word boundaries来防止这种情况发生。然后,使用否定lookahead assertion排除SN

\b(?!SN)[A-Z]{2}\b

编辑:哦, Flex:)

嗯,POSIX正则表达式引擎不知道外观。你需要拼写出来:

\b(S[A-MO-Z]|[A-RT-Z]N|[A-MO-RT-Z]{2})\b