2013-05-22 35 views
0

我想解析多行注释,但它总是贪婪的。贪婪的正则表达式 - 如何支持多行模式?

正则表达式:

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

挠曲文件片段:

<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*# 

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

回答

2

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

MUL_COMMENT "#*"([*]*[^*#]|[#])*"*#" 
+0

它运作良好,非常感谢你! – sinory