我想创建一个脚本,删除文件中的所有注释。我现在的正则表达是:
$new = preg_replace_all("/(\/\*.*\*\/)/s", "", $contents);
哪个匹配(并删除)/*
和*/
当文件的内容如下所示时,问题就变得很明显了:
/* First comment */
first_function();
/* Second comment */
second_function();
我的正则表达式不是删除第一个和第二个注释,而是保留两个函数调用,而是匹配从第一个/*
到最后一个*/
的所有内容,从而完全删除first_function()
调用。
我想一个解决方案是将我的.*
(与任何内容匹配)替换为匹配任何的内容,直到您到达*/
。但我不知道怎么写。我预计它会像[^\*\/]
那样但它没有按预期工作。
正确的正则表达式是什么?
答案 0 :(得分:3)
你非常亲密。您只需在?
之后使用非贪婪匹配字符.*
,如下所示:
$new = preg_replace_all("/(\/\*.*?\*\/)/s", "", $contents);
^
^
^
^
只需要一个问号...
在工作here
中查看此内容