为什么 Lex/flex 显示不匹配的输入?

Why does Lex/flex show input although it isn't matched?

%%
[0-9]+ {printf("%s is a number\n",yytext);}
%%
int main()
{
   yylex();
}

对于输入 affafe,结果为 affafe,但不匹配。如何停止在输出中显示不匹配的输入?

(F)lex 插入一个默认操作来处理没有模式匹配的情况。默认操作匹配单个字符 并将其回显到标准输出 .

为避免这种情况,请在匹配单个字符且不执行任何操作的模式末尾添加您自己的回退规则:

.|\n      ;