如何在任何编辑器中通过 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 注释行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle RDBMS 中通过掩码删除用户

Linux中通过命令直接删除文件中最后一行

正则表达式:擦洗 HTML

如何在 iOS 中通过 xmpp 删除单个聊天?

如何在快递js中通过id删除多个集合中的记录?

SQL/Regex Challenge/Puzzle:如何从 SQL 代码中删除注释(通过使用 SQL 查询)?