【发布时间】:2012-07-15 23:14:37
【问题描述】:
我创建了一个 php 正则表达式来查找字符串中的所有 cmets /* */,当我使用此测试工具 http://regexpal.com/ 对其进行测试时,该字符串可以正常工作
/\*(.*\s){0,}.*\*\/
然后我用分隔符 # 包围它,所以它可以与 preg_replace 一起使用,但现在它不起作用。
#/\*(.*\s){0,}.*\*\/#
$fileContents = preg_replace("#/\*(.*\s){0,}.*\*\/#","Replacement Text",$fileContents);
当我回显 $fileContents 时,什么都没有打印出来。我做错了什么?
【问题讨论】:
-
看起来像it works for me。你有失败的测试用例吗?
-
为什么看起来这么复杂?您可以只使用
.*?和#sdotall 修饰符来代替内部匹配。 -
提示:
{0,}与*相同。在将$fileContents输入 preg_replace 之前,您是否检查过它是否确实包含某些内容?即使正则表达式没有找到要替换的任何内容,您也应该至少取回原始字符串。 -
FileContents 包含之前的文本,我回显出来检查。当我将 var_dump 添加到 preg_replace 时,它输出 null。
-
只是为了让你知道我想通了。 CRLF 线路终结器存在问题。我使用了正则表达式 "#/*(.\r?\n)*.**\/#" 请参阅链接 stackoverflow.com/questions/1179349/… 感谢您的所有帮助
标签: php regex preg-replace