规则在Flex (LEX)中使用^时无法匹配



我试图在Flex中运行一些简单的正则表达式,但我无法获得操作符"^"作为否定来工作。这是我的代码:'

%%

[^abc]      printf("rule triggeredn");
.       
n

它应该匹配任何不是"a", "b"或者"c",但我得到的却是:"警告,规则无法匹配"。

另一种用法是"^"^a似乎工作良好,匹配任何以"a"开头的字符串。而[a^b]匹配任何包含"a"或";b"。而且,很奇怪的是,如果在规则[^a]之前加上其他内容,例如:

,则规则[^a]可以按预期工作。
%%
b+[^a]      printf("rule triggeredn");
.
n

匹配一个字符串,该字符串以任意数量的"b"s开头,后面没有"而且似乎工作正常。但是如果我不允许出现"b"如:

%%

b*[^a]      printf("rule triggeredn");
.       
n

给出相同的"警告",规则无法匹配。当然,这是行不通的。有点难住了。

p。我在cycgwin中使用Flex,如果这很重要(它应该与所有Lex语法兼容)。

规则n不能匹配任何东西。它不能匹配任何东西,因为换行符不是abc,所以它总是匹配第一个规则,因此第三个规则不能每次匹配。

相关内容

  • 没有找到相关文章

最新更新