%{
%}
%%
"<"[^>]*> {printf("%s\n", yytext); }
. ;
%%
int yywrap(){}
int main(int argc, char*argv[])
{
extern FILE *yyin = fopen("tags.txt","r");
yylex();
return 0;
}
这将打印出所有标签...我如何在标签内打印文本。 我用了“>” [^>] * <,但这没用...
答案 0 :(得分:1)
您的lex文件:
如果我理解正确,您希望它
这表明您应该尝试交换当前文件中的操作。
答案 1 :(得分:0)
如果要在标签之间添加文本,则需要忽略标签并获取所有其他未标记标签开头的文本:
TAG <[^>]*>
ALLBUTSTARTOFTAG [^<]*
%%
{TAG} ; // do nothing, i.e. ignore a tag
{ALLBUTSTARTOFTAG} {printf("%s\n", yytext); } // print the text until a tag starts
%%
然后,以下功能
int main(){
char string[] = "before any tag<html>between html and body<body>body content</body>between body end and html end</html>after html end";
YY_BUFFER_STATE buffer = yy_scan_string(string);
yyparse();
yy_delete_buffer(buffer);
return 0;
}
打印:
before any tag
between html and body
body content
between body end and html end
after html end