PHP preg_replace非贪婪的麻烦

Jef*_*amb 6 php regex regex-greedy

我一直在使用以下网站来测试PHP正则表达式,所以我不必经常上传:http: //www.spaweditor.com/scripts/regex/index.php

我正在使用以下正则表达式:

/(.*?)\.{3}/
Run Code Online (Sandbox Code Playgroud)

在以下字符串上(替换为空):

Non-important data...important data...more important data
Run Code Online (Sandbox Code Playgroud)

和preg_replace返回:

more important data
Run Code Online (Sandbox Code Playgroud)

但我希望它能回归:

important data...more important data
Run Code Online (Sandbox Code Playgroud)

我以为?是非贪婪的修饰语.这里发生了什么?

Asa*_*aph 8

您的非贪婪修饰符正在按预期工作.但是preg_match替换所有出现的(非贪婪)匹配与替换文本(""在您的情况下).如果你只想要替换第一个,你可以1作为可选的第四个参数(限制)传递给preg_replace函数(preg_replace的PHP文档).在您链接的网站上,可以通过1在单词"Flags"和单词"limit"之间输入文本输入来完成.