关于正则表达式在c语言中的使用问题

我在C语言中编写了一个正则表达式,来区分c语言源程序中空行、注释和代码。但是匹配代码的正则表达式会将注释也匹配到,这让我不能理解,请各位高手指教一下!这是匹配代码的正则表... 我在C语言中编写了一个正则表达式,来区分c语言源程序中空行、注释和代码。但是匹配代码的正则表达式会将注释也匹配到,这让我不能理解,请各位高手指教一下!
这是匹配代码的正则表达式:^[:blank:]*[^/].*$
展开
 我来答
百度网友98422ad
2011-01-03 · TA获得超过339个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:296万
展开全部
单看这个正则的意思是:
匹配以若干个(包括0个)空格或制表符开头,后跟一串不以”/“开头的字符。
显然这和你的要求不符。因为[^/]也可以匹配空白字符。比如:
空格//注释
你的本意是[:blank:]*匹配空格,[^/]不匹配”/“所以该行应该不匹配。
但是,实际的匹配过程没有在此打住:
正则回溯,这一次尝试[:blank:]*神马都不匹配,[^/]匹配空格,.*匹配剩余字符,于是这一行就被匹配了。
稍微改动就可以解决这个问题,^[:blank:]*[^\s/].*$其中\s匹配所有不可见字符,或许你也可以写成^[:blank:]*[^[:blank:]/].*$这种形式,再或者也可以写成只匹配注释的正则,再从不匹配的里面区分代码和空行。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式