如何用正则表达式来匹配c语言风格的注释?楼主chocean()2006 04 30 15_48_05 在 专题开发_技术_项目 _ 数据结构与算法 提问

如何用正则表达式来匹配c语言风格的注释?楼主CHOcean()2006-04-30 15:48:05 在 专题开发/技术/项目 / 数据结构与算法 提问

一个cpp文件会包括很多次/…../ 形式的注释。用”/*.*/”只能匹配出现一次的注释。比如有/ line1 / …/ line n */ 的字符串,只会被匹配到一次,因为首尾都符合匹配条件。

往下一步想,匹配规则应该为: /开头, 中间不包括/, 结尾是*/

但是“中间不包括/”不知如何实现,现在只能做到”/*[^/]*/” (中间不包括/)

求高手指点

问题点数:20、回复次数:4

Top

1 楼mmmcd(超超)回复于 2006-05-01 09:55:10 得分 0 “中间不包括/” <=> “中间不包括”或“中间包括*,它后面不是/”

Top

2 楼pankun(剑神一笑 Console下面干革命)回复于 2006-05-03 14:44:26 得分 0 一个cpp文件会包括很多次/…../ 形式的注释。用”/*.*/”只能匹配出现一次的注释。比如有/ line1 / …/ line n */ 的字符串,只会被匹配到一次,因为首尾都符合匹配条件。


这个应该是看你是用什么正规表达式解析库的,不同的库有设置,比如是否匹配最多的可能.

Top

3 楼mmmcd(超超)回复于 2006-05-04 20:41:58 得分 20Lex中,可以这样写:”/*”([^*] (*)[^*/])(*)/”

Top

4 楼CHOcean()回复于 2006-05-07 09:29:40 得分 0 多谢超超!

”/*”([^*] (*)[^*/])(*)/”果然管用.

a = “aaa/coment1/bbb/comentcoment2/*/ccc”

re.sub(r”/*([^*] (*)[^*/])(*)**/”, “”, a)

‘aaabbbccc’

Powered by Jekyll and Theme by solid

本站总访问量