如何打印匹配的字符串?

Nik*_*hil 4 c regex lex flex-lexer

我真的不熟悉 lex/flex。我正在尝试调试一些遗留的 flex 代码。我想查看与特定规则匹配的文本。

例如。

[a-z]*      {"some C code"  "need to print the string that matched this rule"}
Run Code Online (Sandbox Code Playgroud)

例如。如果johndoe@xyz.com 是输入,我需要打印匹配的字符串,即johndoe

我尝试打印yytext,但它只显示第一个字符。

ric*_*ici 6

如果您正在尝试调试,并且正在使用flex,那么您可能希望在-d将 flex 输入转换为C. 这将构建一个调试扫描器,它将自动报告所有规则匹配(以及其他事件)。

有关更多详细信息,请参阅flex 手册

如果你真的想插入printf语句,这应该可以正常工作:

printf("The matched text is <%s>\n", yytext);
Run Code Online (Sandbox Code Playgroud)