我有这个数组:
'@(.*?)<div>(.*?)</div>(.*?)@i' => 'ok'
我正在使用preg_replace从某个字符串返回值“ok”。
问题在于,当我执行preg_replace时,最后(.*?)
未被“检测到”。
实施例
我有字符串:test1<div>test2</div>test3
使用该数组和preg_replace,它将返回oktest3
。为什么不替换test3?
答案 0 :(得分:4)
问题是,.*?
是非贪婪的匹配,因此尝试尽可能少地匹配。
如果您希望它从字符串的开头到结尾匹配,请使用^
and $
将正则表达式锚定到开头和结尾,如下所示:
'@^(.*?)<div>(.*?)</div>(.*?)$@i' => 'ok'