2014-09-01 60 views
4

ReGex新手在这里。RegEx删除/ ** * /和// ** ** // php的评论

我需要使用RegEx从PHP文件中删除两个不同的样式注释。

我发现这种表达在BBEdit中的文本编辑器运行:

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

,并在第一个样式删除注释,如下图所示:

/** This comment gets removed with my regex */

但不删除这些风格的评论:

// ** This comment has the double leadng-trailng slashes ** //

我不知道为什么会有两种不同类型的评论混合在一起,并且只有少数//评论,但我需要全部删除它们。

添加另一斜线到搜索,即

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

使得表达贪婪和它在非注释的代码删除单斜线。一个工作表达需要明显不止如此复杂:)

+0

我觉得第二个是不是2种类型的混合,它只是使用'单行注释风格// '。 – 2014-09-01 17:39:34

回答

1
~//?\s*\*[\s\S]*?\*\s*//?~ 

这works.Just加上另一个\和空间的食客到你的答案。

查看演示。

http://regex101.com/r/lK9zP6/6

+0

这很好。和regex101是一个伟大的网站与正则表达式玩;我以前不知道。谢谢。 – markratledge 2014-09-01 19:56:08

+0

@songdogtech是的,它是.Youare欢迎。还有一个https://www.debuggex.com/以可视化。 – vks 2014-09-01 19:58:05

2

你可以使用这个表达式:

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

Working demo

enter image description here

由于Hwnd指出在这个答案,如果将分隔符更改为~,则可以使用清理编辑正则表达式:

/\*.*?\*/|//.*?\n 
+0

谢谢,这些工作,但@ vks击败了你的工作答案,因为你的第一稿也删除了所有评论和代码。 – markratledge 2014-09-01 19:57:18

+0

@songdogtech感谢您的评论。顺便说一下,你可以自由选择最适合你的答案。感谢您的+1 – 2014-09-01 19:59:23

5

PHP已经有一个内置的功能为:

php_strip_whitespace($filename); 
+2

这是非常好的,我提供了一个基于正则表达式但是+1的答案,因为你使用了一个内置函数。 – 2014-09-01 17:45:45

+0

一个php函数的解决方案是很好的知道,我可能会在将来使用它;但我需要在BBedit中运行正则表达式来清理正在打开和编辑的文件。而且,strip_whitespace会删除所有空格并压缩代码,以免干净编辑。 – markratledge 2014-09-01 19:55:05

+0

@FedericoPiazza既然你喜欢这个答案,为什么不写一个PHP脚本: <?php \t $ file = $ _GET [“file_name”]; \t $ new_content = php_strip_whitespace(file_get_contents($ file)); \t file_put_contents($ file,$ new_content); ?> 并将其称为:http://localhost/stripwhite.php?file = myfile.php – Popsyjunior 2017-04-27 09:15:47