Regex Flex正则表达式

Regex Flex正则表达式,regex,flex-lexer,Regex,Flex Lexer,我搞不懂下面的表达是什么意思 我知道flex中正则表达式的基本语法,并试图弄明白正则表达式的含义,但没有弄明白。我已经试了3个小时了 %% "/*".*"*/" {int i = 0; while (yytext[i]!='\0') { if(yytext[i]=='\n') { lineno++; colno=1; } else colno++; i++; } } "//".*"\n" { lineno++; colno=1;} (\"(.)*\") {colno+=strlen(yytext

我搞不懂下面的表达是什么意思

我知道flex中正则表达式的基本语法,并试图弄明白正则表达式的含义,但没有弄明白。我已经试了3个小时了

%%
"/*".*"*/" {int i = 0;
while (yytext[i]!='\0') {
if(yytext[i]=='\n')
{
lineno++;
colno=1;
}
else
colno++;
i++;
}
}
"//".*"\n" { lineno++; colno=1;}
(\"(.)*\") {colno+=strlen(yytext);}
(\'(.)\') {colno+=strlen(yytext);}
我的问题是告诉我这四个正则表达式在代码中的含义是否与换行符以外的最长字符序列相匹配。Flex允许您通过将字符置于双引号(
“/”
)或使用反斜杠(
\“
)来引用字符。因此,这四种模式匹配由字符组成的当前行中的最长序列

  • /*
    */

  • /
    到行尾

  • 到“`”

  • 只有第二个选项可以按预期工作。如果同一行上有两个匹配项,则所有其他选项都会匹配过多,而第一个选项将不匹配多行注释

    除了基础之外,没有太多的东西可以调整模式。所有的模式语法都在本手册的一个非常短的章节中描述