我试图在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
不能匹配任何东西。它不能匹配任何东西,因为换行符不是a
、b
或c
,所以它总是匹配第一个规则,因此第三个规则不能每次匹配。