如何在任何编辑器中通过 Regex 删除所有单行 PHP 注释行
Posted
技术标签:
【中文标题】如何在任何编辑器中通过 Regex 删除所有单行 PHP 注释行【英文标题】:How to delete all single-line PHP comment lines through Regex in any editor 【发布时间】:2017-02-11 01:03:24 【问题描述】:我在编辑器中打开了一个 php 文件,例如 Geany/Notepad++,它具有 cmets 单行和块 cmets 类型。
现在块 cmets 对文档很有用,我只想删除以 //~
或 #
开头的单行 cmets。其他以//
开头的 cmets 如果不是从 //
开始的行,则应保留。
如何使用正则表达式做到这一点?我在下面尝试了这个,但我陷入了转义斜线,还包括#
。
^[#][\/]2[~].*
【问题讨论】:
【参考方案1】:正则表达式^[#][\/]2[~].*
的问题在于它匹配以#//~
开头的行。
正则表达式与
相同^#\/\/~.*
使用正则表达式
^\s*(\/\/|#).*
Demo
说明:
单行 cmets 可以在行首或几个空格(缩进)之后开始。
^
:行首
\s*
: 任意数量的空格
(\/\/|#)
:匹配 //
或 #
字符。 |
在正则表达式中是 OR。
.*
: 匹配任意字符(换行符除外)任意次数
请注意,PHP comments 在//
之后不包含波浪号~
。即使~
出现在//
之后,因为上面的正则表达式检查//
并且不关心它后面的字符,//~
的注释也会匹配。
【讨论】:
是什么让你认为 cmets 不包含~
?
@u_mulder 我在official doc 看到它,但没有找到那个语法。
在 Geany 中,当应用注释快捷方式 (Ctrl + E) 时,应用的 cmets 包含 //~
评论应该以//
开头。但在那之后我可以写任何符号。
@u_mulder 对。但是~
不是强制性的,我已经更新了答案。此外,以前的正则表达式 ^\s*(\/\/|#).*
也将匹配该类型的 cmets,因为它以 //
开头。以上是关于如何在任何编辑器中通过 Regex 删除所有单行 PHP 注释行的主要内容,如果未能解决你的问题,请参考以下文章