【发布时间】:2016-12-05 19:34:30
【问题描述】:
我想从这个answer to this question使用这个正则表达式 (["'])(?:(?=(\?))\2.)*?\1
但是当我在 lex 输入文件中使用它时,如下所示:
DOUBLEQUOTE_CONTENTS (["'])(?:(?=(\?))\2.)*?\1
%%
{DOUBLEQUOTE_CONTENTS} { printf("这里"); }
我从 lex 收到大量“无法识别的字符”错误。第一眼就噎住了?性格等等。如果我逃避?字符,正则表达式不再匹配。
如何在 lex 输入文件中使用上述正则表达式?
【问题讨论】:
-
@WiktorStribiżew 可能是这样,但我相信这个问题是偶然的。
-
我想你只需要展开模式:
"[^"\\]*(\\.[^"\\]*)*"|'[^'\\]*(\\.[^'\\]*)*'