这并不是一篇教正则基础的文章,其正则式不能对您进行使用后的结果负责,请以研究的眼光看待本篇文章。
技术就是懒人为了更好的懒才会想办法搞的东西,我最近因为某些原因需要频繁删除注释
我就想到通过替换的正则功能快速删除文件中的简单注释
我开始想着只要匹配后面的内容,那么只需要更换前面的“头”就能适配其他语言了,然后写出了一个十分臃肿的正则匹配工式
JavaScript单行臃肿版
//(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*
HTML单行臃肿版
<!--(( )|\w|[`!@#$%^&<>*?/*+-;'""“”;:|()()]|\S)*
CSS单行臃肿版
/\*(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*
Python单行臃肿版
#(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*
Java单行臃肿版
//(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*
正当我还高兴呢
直到PHP的时候发现多行注释了
<!--(( )|\w|[`!@#$%^&*?/*+-;'""“”;:|()()]|\S)*
这个正则公式对多行注释完全不管用,然后尝试以下的公式
<!--(( )|\n|\S|\w|[`!@#$%^&*?/*+-;'""“”;:|()()])*(^(-->)
$)
很显然也行不通
最终研究出了一个按逐符读写的模式来匹配内容的妥协方案的公式
PHP多行适配简洁版
<!--((.\s)|.)*-->
多行注释不能存在空行问题
虽然多行和单行注释全都能匹配到,但是多行注释不能存在空行,例如php注释:
第8行的空行会导致这个注释不能被识别到
在网上搜了很多资料并进行很多尝试,那些所谓的匹配空行的办法并不能真正解决这个问题,以目前正则研究的水平,我现在还真是拿它没办法了,只能先通过改变用户习惯,多行注释不打空行来保证一次删的干净。
jetbrain全家桶程序编辑器使用本文正则公式方法
先通过Ctrl+R来打开“替换”功能
一般默认不开启正则匹配的,所以要点亮正则图标
将公式粘进第一行,第二行为空,然后直接点击“全部替换”即可
多行适配简洁版(可以试一试)
按默认习惯做的,如果你的习惯不太一样则需要稍加修改
Javascript单多行通用
/\*((.\s)|.)*\*/
Python单行
#(.)*
Python双引号多行
"""\s((.\s)|.)*"""
Python单引号多行
'''\s((.\s)|.)*'''
HTML单多行通用
<!--((.\s)|.)*-->
总结
从晚上11点提出需求到本文写完已经是凌晨3点了,最后结局留有遗憾,本文仅作为研究性讨论文章,不具有技术指导意义。
在正则问题的研究中,通过实际问题,从最初的复杂公式,精简为精炼公式,从解决单行问题,到解决多行问题,在过程中加深了对正则的理解与认识,在今后的代码工作与学习中,正则的运用将提高编码效率和技术水平