我不知道下面的表达式是什么意思?
我了解flex中regex的语法基础,并试图弄清regex的含义,但是不能。我已经尝试了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);}
我的问题是告诉我代码中这四个正则表达式的含义
答案 0 :(得分:1)
.IsUnicode(false)
.HasConversion(typeof(string))
(或.*
,含义相同)匹配除换行符以外的最长字符序列。 Flex允许您通过将字符放在双引号((.)*
)中或使用反斜杠("//"
)来对字符进行引用。因此这四个模式匹配当前行中由字符组成的最长序列
从\"
到/*
从*/
到行尾
从//
到"
从"
到``'`。
只有第二个可以正常使用。如果同一行上有两个匹配项,则所有其他匹配项都将匹配过多,并且第一个将不匹配多行注释。
除了基础知识以外,没有什么可以改变模式的了。 flex manual的非常短的一章中介绍了所有模式语法。