社区
数据结构与算法
帖子详情
flex 中c的注释/*aaa*/的正则表达式如何写?
alphapaopao
2003-10-13 12:48:09
"/*"(([^*]|("*"[^/*]))*)("*"/"*")*("*/") printf("c comments:\n\n%s[END]\n\n\n", yytext);
这是我写的,后来发现不对。
注释的DFA很容易做出来,但是为什么他的正则表达式那么难写?
...全文
399
18
打赏
收藏
flex 中c的注释/*aaa*/的正则表达式如何写?
"/*"(([^*]|("*"[^/*]))*)("*"/"*")*("*/")printf("c comments:\n\n%s[END]\n\n\n", yytext); 这是我写的,后来发现不对。 注释的DFA很容易做出来,但是为什么他的正则表达式那么难写?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
borlang
2003-10-20
打赏
举报
回复
这样也可以:(/\*).*?(\*/)
alphapaopao
2003-10-16
打赏
举报
回复
ttmmdd(老孩子) 的的确可以,我已经成功匹配
/**/
/***/
/*aa*/
/*aa**/
alphapaopao
2003-10-14
打赏
举报
回复
/*aa**/ 无法正确匹配
ttmmdd
2003-10-14
打赏
举报
回复
恩?我用到现在没问题啊?
warton
2003-10-14
打赏
举报
回复
贴子不错!!我还是用php时简单地学习了一下正则表达式,现在忘记得差不多了!
alphapaopao
2003-10-14
打赏
举报
回复
ttmmdd(老孩子) 的不行,我的也不行
ttmmdd
2003-10-14
打赏
举报
回复
我试过了,可以匹配的.
/*aa**/
《/*》 匹配 "/*"
《aa》 匹配 (([^*/])+([/])*)*
《*》 匹配 (
*
(([^*/])+([/])*)*)因为 (([^*/])+([/])*)*可以为空.
《*/》 匹配 "*/"
warton
2003-10-14
打赏
举报
回复
试试这个:((\/\*((\*[^\/]+)|[^\*])+\*\/)|(\/\/))
alphapaopao
2003-10-14
打赏
举报
回复
哇!!置顶了!
alphapaopao
2003-10-13
打赏
举报
回复
"/*"([^*]|\*[^/*])*"*/"
这个好像也可以
alphapaopao
2003-10-13
打赏
举报
回复
楼上的牛!!!
不过我还没理解这个表达式
ttmmdd
2003-10-13
打赏
举报
回复
这个是可以地...
"/*"(
*
(([^*/])+([/])*)*)*"*/"
alphapaopao
2003-10-13
打赏
举报
回复
== 对于 /*foo*abc*/ 的匹配过程 == 注:《》里面是要匹配的字符串
《/*》 匹配 "/*"
《foo》 匹配 [^*]
《*》 foo后面的*匹配 \*(\**)
《abc》将从头匹配,因为它是重复多个的 ([^*]*\*(\**))+ ,它匹配到了这个表达式开头的 [^*]
《*》 abc后面的*匹配 \*(\**)
《/》 匹配 "/"
请大虾指教!
alphapaopao
2003-10-13
打赏
举报
回复
== 对于 /*foo*abc*/ 的匹配过程 == 注:《》里面是要匹配的字符串
《/*》 匹配 "/*"
《foo》 foo后面的*匹配 [^*]
《*》 匹配 \*(\**)
《abc》将从头匹配,因为它是重复多个的 ([^*]*\*(\**))+ ,它匹配到了这个表达式开头的 [^*]
《*》 abc后面的*匹配 \*(\**)
《/》 匹配 "/"
请大虾指教!
alphapaopao
2003-10-13
打赏
举报
回复
"/*"([^*]*\*(\**))+"/"
我觉得我这个应该没问题阿,是在看不出来什么地方有问题。还请指教:
"/*" 匹配开始标记
[^*]* 匹配不是*的字符
\* 匹配一个星号*
\** 匹配*,0个,若干个
([^*]*\*(\**))+ 这样的情况1个,或多个
"/" 最后匹配结束符号 /
== 对于 /* define a integer variable */ 的匹配过程 == 注:《》里面是要匹配的字符串
《/*》 匹配 "/*"
《 define a integer variable 》 匹配 [^*]
《*》 匹配 \*(\**)
《/》 匹配 "/"
Riemann
2003-10-13
打赏
举报
回复
写注释的正则表达式要考虑得东西很多。在你的表达式中很多情况都是不能匹配到的。
例如:int i; /* define a integer variable */
/* comment */ /* This is
a comment */
下面是我曾经看到过的一种写法,感觉挺不错的。
%{
int comments, code, spaceline;
%}
%x COMMENT
%%
^[ \t]*"/*" { BEGIN COMMENT; /* 进入注视处理状态 */ }
^[ \t]*"/*".*"*/"[ \t]*\n { comments++; /* 处理注释的自包含 */ }
<COMMENT>"*/"[ \t]*\n { BEGIN 0; comments++; }
<COMMENT>"*/" { BEGIN 0; }
<COMMENT>\n { comments++; } /* 处理注释中的空行 */
<COMMENT>.\n { comments++; } /* 处理注释中的文本 */
^[ \t]*\n { spaceline++; } /* 处理空行 */
.+"/*".*"*/".*\n { code++; }
.*"/*".*"*/".+\n { code++; }
.+"/*".*\n { code++; BEGIN COMMENT; }
.\n { code++; }
.; /* 忽略其他 */
%%
main()
{
yylex();
printf("code: %d, commnents: %d, spaceline: %d\n",
code, comments, spaceline);
}
alphapaopao
2003-10-13
打赏
举报
回复
"/*"([^*]*\*(\**))+"/"
冥思苦想,这个看样子是可以的。但是还是匹配不到。郁闷
alphapaopao
2003-10-13
打赏
举报
回复
up
100个
正则表达式
的入门实例和40个组合类型
正则表达式
实例
100个
正则表达式
的入门实例和40个组合类型
正则表达式
实例
正则表达式
介绍
正则表达式
(Regular Expression) 1.
正则表达式
的介绍 是强大、便捷、高效的文本处理工具。
正则表达式
本身,如同一门袖珍编程语言的通用模式表示法,赋予使用者描述和分析文本的能力。配合上特定工具提供的额外...
正则表达式
的性质 —— 理论与实践指南(面向工程与教学的分层讲解)
本文系统介绍了
正则表达式
的理论与工程实践。首先区分了工程视角(文本匹配工具)与理论视角(正则语言)的
正则表达式
,并阐述了正则式的基本构造规则与自动机的等价性。然后详细讨论了正则式的代数性质,包括并、...
字符串、格式化、
正则表达式
【下】
附带这个章节会讲到很多关于处理字符串格式的内容,包括使用
正则表达式
做验证以及使用日期、货币格式化处理,还会提及到的就是如果在使用JDBC的时候针对SQL的类型[java.sql包内]和针对Java的类型[java.util]的一些...
JavaScript
中
使用
正则表达式
验证邮箱地址:一份完整指南
本文介绍了在JavaScript
中
使用
正则表达式
进行邮箱验证的方法。首先强调了邮箱验证对于数据完整性、用户体验和系统安全的重要性,并对比了客户端与服务器端验证的差异。接着回顾了
正则表达式
的基础知识,包括锚点、...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章