弹性正则表达式
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 允许您通过将字符放入双引号 ("//"
) 或使用反斜杠 (\"
) 来引用字符。所以四种模式匹配当前行中最长的由字符组成的序列
从 /*
到 */
从//
到行尾
从 "
到 "
从 '
到 ``'`。
只有第二个可以按预期工作。如果同一行有两个匹配,其他的都会匹配太多,第一个不会匹配多行注释。
除了基础之外,没有太多可以改变模式的地方。所有模式语法都在 flex manual.
的一个非常短的章节中进行了描述
我不明白以下表达式是什么意思?
我知道 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 允许您通过将字符放入双引号 ("//"
) 或使用反斜杠 (\"
) 来引用字符。所以四种模式匹配当前行中最长的由字符组成的序列
从
/*
到*/
从
//
到行尾从
"
到"
从
'
到 ``'`。
只有第二个可以按预期工作。如果同一行有两个匹配,其他的都会匹配太多,第一个不会匹配多行注释。
除了基础之外,没有太多可以改变模式的地方。所有模式语法都在 flex manual.
的一个非常短的章节中进行了描述