正则表达式 – 如何在LEX / FLEX中编写非贪婪匹配?

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何在LEX / FLEX中编写非贪婪匹配?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用FLEX和BISON来解析传统语言(类似于’C’).除了匹配的字符串之外,一切都很好.

这种相当奇怪的遗留语言不支持在字符串文字中引用字符,因此以下是所有有效的字符串文字

"hello"
""
"\"

我使用以下规则来匹配字符串文字

\".*\"            { yylval.strval = _strdup( yytext ); return LIT_STRING; }

不幸的是,这是一个贪心的比赛,所以它匹配如下的代码

"hello","world"

作为一个单一的字符串(你好,“世界”).

通常的非贪心量词.*?在FLEX中似乎不起作用.有任何想法吗?

只是禁止在引号之间引用一个引号.
\"[^"]*\"

猜你在找的正则表达式相关文章