利用正则表达式删除代码中的注释
背景:
在实现某功能的过程中,为了方便看,频繁的copy其他模块的内容,导致代码中充满了没意义的注释,需要删除。
单行注释的处理
在一行代码中,//
及之后的内容都是注释,直接匹配去掉即可。
本打算使用//.*
,但是遇到如//hello everyone
之类有空格的情况时,无法删除完整,所以采用另一种办法。
|
|
多行注释的处理
与单行的注释不同,多行注释/* */
中可能存在换行符,.
只能代表除换行符以外字符。
字符 | 含义 |
---|---|
\s | 匹配任何空白字符,等价于[\f\n\r\t\v] |
\S | 匹配任何非空白字符 |
利用[\s\S]
即可表示任意的字符组合,[\s\S]*
就是任意数量的任意字符组合。
但注意到一个问题,正则表达式匹配的过程中默认采用贪婪模式
。而我们希望的是匹配到每一段注释,这里就需要使用非贪婪模式
。在匹配优先量词后加上?
即变成属于非贪婪模式的量词。
所以代码如下:
|
|
当然,可以整合一下两种注释:
|
|
这样就可以去掉不想要的注释啦~不过作为一个程序猿,多写注释还是一个比较好的习惯呢,这只是在特定情景下的需求啦~