β

正则表达式匹配注释

openQ 298 阅读
 

主要是针对以下几种注释
1、行注释://
2、块注释:/**/
3、行注释:#

(?<!:)\/\/.*|#.*|\/\*(.|\s)*?\*\/

这个正则表达式由"|“分割成三部分:

第一部分、

(?<!:)\/\/.*

用来匹配//单行注释,同时通过 (?<!:) 反向否定了:与//衔接的情况,从而避免命中各种网络协议。
这里边涉及的反向否定预查实际上是正则的 模式匹配 的高级用法了,模式匹配总共有:(pattern),(?:pattern),(?=pattern),(?!pattern),(?<=pattern),(?<!pattern)六种形式,可以参阅我在后边推荐的百度百科相关文章。

第二部分、

#.*

很简单用来匹配#号注释。

第三部分、

\/\*(.|\s)*?\*\/

用来匹配前后是斜杠星的块状注释,中间是文字或空白字符(空格、制表符、换页符等等)。
其中有一个符号值得注意一下: ? 问号。问号和前边 组成 *? 代表 非贪婪匹配 *,如果只有*那就是贪婪匹配,就会出现两个注释块中间的正文也被匹配上去的情况。

文中正则来源: 传送门
关于正则非常棒的资料: 百度百科
贪婪与非贪婪模式: 传送门
好用的在线正则工具: 传送门

 
作者:openQ
原文地址:正则表达式匹配注释, 感谢原作者分享。