regex - Flex 正则表达式
问题描述
我无法弄清楚以下表达式是什么意思?
我知道 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 允许您通过将字符放在双引号 ( "//"
) 中或使用反斜杠 ( \"
) 来引用字符。所以这四种模式匹配当前行中由字符组成的最长序列
从
/*
高达*/
从
//
到行尾从
"
高达"
从
'
上到`'`。
只有第二个会按预期工作。如果同一行有两个匹配项,则其他所有项都将匹配太多,而第一个将不匹配多行注释。
除了基础知识之外,没有太多可以灵活调整的模式。所有模式语法都在flex 手册的一个非常短的章节中描述。
推荐阅读
- javascript - 使用 onStepChangingMethod (jquery-steps) 检查所有输入
- python-3.x - 如何在 20 更新后修复 pip 错误
- c++ - 如何在不传递参数数量且仅使用 3 个点的情况下使用可变参数函数?
- python - 熊猫计数范围在两个数据框中
- python - 在python中获取小数点右边的值
- ios - 本地化 iOS Info.plist 隐私字符串
- docker - Dockerized JMeter 不向 Dockerized 微服务发送请求
- javafx - 将 JavaFX 应用程序构建为 Singleton
- angular - 如何使用 Bazel 将 Angular 应用程序集成到 Monorepo 中?
- unit-testing - 是否需要 Spring/Micronaut 存储库测试