弹性正则表达式

Flex Regular Expressions

我不明白以下表达式是什么意思?

我知道 flex 中 regex 的语法基础,并试图弄清楚 regex 的含义,但 not.I 已经尝试了 3 个小时。

%%
"/*".*"*/" {int i = 0;
while (yytext[i]!='[=10=]') {
if(yytext[i]=='\n')
{
lineno++;
colno=1;
}
else
colno++;
i++;
}
}
"//".*"\n" { lineno++; colno=1;}
(\"(.)*\") {colno+=strlen(yytext);}
(\'(.)\') {colno+=strlen(yytext);}

我的问题是告诉我代码中这四个正则表达式的含义

.*(或(.)*,意思相同)匹配除换行符以外的最长字符序列。 Flex 允许您通过将字符放入双引号 ("//") 或使用反斜杠 (\") 来引用字符。所以四种模式匹配当前行中最长的由字符组成的序列

  1. /**/

  2. //到行尾

  3. ""

  4. ' 到 ``'`。

只有第二个可以按预期工作。如果同一行有两个匹配,其他的都会匹配太多,第一个不会匹配多行注释。

除了基础之外,没有太多可以改变模式的地方。所有模式语法都在 flex manual.

的一个非常短的章节中进行了描述