帮助Lex / Flex Pattern

时间:2014-11-08 23:11:03

标签: lex

教授。因为我的C / C ++类已经向我们介绍了Flex(词典分析器),所以这意味着我在使用flex时总是绿色角。

我目前正在处理的家庭作业是从简单的html文件中删除html标签,只留下内容。声明:

[^\/\n<>"]*   printf("%s\n", yytext);

我可以删除角度和引号,但它会留下标记文本。然后我在尖括号内添加了a-z,并根据一个网络教程在尖括号周围放置引号使得这个模式:

[^\/\n"< a-zA-Z>""]*   printf("%s\n", yytext);

所有这一切都是为了删除所有留下数字标点符号的字母,这不是我追求的。

那么我怎么能告诉flex将尖括号和括号之间的文本包含在一起来制作一个正则表达式类呢?只需给出答案,就可以选择一小块指令。这是我打算学习和使用的很酷的实用程序。

提前致谢 沃尔特

1 个答案:

答案 0 :(得分:1)

好吧,html标签看起来都像<something with optional modifiers>(AFAIK),所以我会寻找像

这样的规则集
<[^>]*> { /* skip */ }
.       { printf("\%s", yytext); }

当然,如果你尝试一次吃掉所有没有html标签的东西,你可以加快处理速度。但是上面的规则应该有效并且易于理解。