要删除//***/和//*****//php注释的正则表达式

要删除//***/和//*****//php注释的正则表达式,php,regex,comments,Php,Regex,Comments,这里是ReGex新手。 我需要使用正则表达式从PHP文件中删除两个不同样式的注释 我发现此表达式在BBEdit文本编辑器中运行: \/\*[\s\s]*?\*\/ 它会删除第一种样式中的注释,如下所示: /**此注释将与我的正则表达式一起删除*/ 但它不会删除这些样式注释: //**此评论带有双引线斜线**/ 我不知道为什么会混合使用两种不同类型的注释,并且只有少数/注释,但我需要将它们全部删除 在搜索中添加另一个斜杠,即 \/\*[\s\s]*?\*\/ 使表达式贪婪,并删除非注释代码中的单斜

这里是ReGex新手。

我需要使用正则表达式从PHP文件中删除两个不同样式的注释

我发现此表达式在BBEdit文本编辑器中运行:

\/\*[\s\s]*?\*\/

它会删除第一种样式中的注释,如下所示:

/**此注释将与我的正则表达式一起删除*/

但它不会删除这些样式注释:

//**此评论带有双引线斜线**/

我不知道为什么会混合使用两种不同类型的注释,并且只有少数
/
注释,但我需要将它们全部删除

在搜索中添加另一个斜杠,即

\/\*[\s\s]*?\*\/


使表达式贪婪,并删除非注释代码中的单斜杠。工作表达式所需的复杂度显然要高于此:)

您可以使用以下正则表达式:

\/\*.*?\*\/|\/\/.*?\n

正如在回答中指出的,如果将分隔符更改为
~
,则可以使用清理后的正则表达式:

/\*.*?\*/|//.*?\n
这很有效。只需在您的答案中添加另一个\和空格

见演示


PHP有一个内置函数:

php_strip_whitespace($filename);

我认为第二种不是两种类型的混合,它只是使用
/
的单行注释样式。这很好,我提供了一个基于regex但+1的答案,因为您使用了内置函数。php函数解决方案很好,我可能会在将来使用它;但是我需要在BBedit中运行regex来清理正在打开和编辑的文件。而且,strip_whitespace删除了所有的空白,并压缩了太多的代码,无法进行干净的编辑。@FedericoPiazza既然你喜欢这个答案,为什么不编写一个php脚本:并这样称呼它:这很好用。regex101是一个与regex一起玩的好网站;我以前不知道这件事。谢谢。@songdogtech是的。不客气。还有一个。为了可视化。谢谢,这些工作,但是@vks在一个可行的答案上击败了你,因为你的第一稿也删除了所有注释和代码。@songdogtech谢谢你的评论。顺便说一句,你可以自由选择最好的答案。谢谢你的+1
php_strip_whitespace($filename);