0

我想解析多行注释,但它总是很贪婪。

正则表达式:

MUL_COMMENT ("#*"(.|\n)*?"*#")

flex 文件片段:

<DIRECTIVE>{MUL_COMMENT} {BEGIN INITIAL;
    printf("mul comment for directive end:%s\n",yytext);yylval.string = strdup(yytext); return COMMENT;}

文本文件:

#*erewrewrewr
wer*#

#set( $a=7)

#*#ere
wrewrewrwe*#

解析结果:

Node:astn=Comment,image:"#*erewrewrewr\nwer*#\n\n#set(            $a=7)\n\n#*#ere\nwrewrewrwe*#"

mul comment for directive end:#*erewrewrewr
wer*#

#set( $a=7)

#*#ere
wrewrewrwe*#

图片是他的字符串匹配,显然他很贪心!如何解决它,请帮助我!

4

1 回答 1

2

通常的方法是*#在您的评论中不匹配:

MUL_COMMENT    "#*"([*]*[^*#]|[#])*"*#"
于 2013-05-23T02:46:33.700 回答