跟进此question
$test = "sed -n '1h;1!H;\${;g;s/<item=\"".$name.".*</\item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);
执行此命令以查找具有指定名称的所有xml节点作为变量传递。这里唯一的问题是匹配超出了初始</item>
到下一个节点,最后到了最后</item>
。
如何让这种非贪婪?
答案 0 :(得分:2)
有时使用负面类比非贪婪匹配更好。它允许更精细的控制,并且更有效。 I.E.为了匹配所有但没有标记关闭你可以做[^>;] *。虽然你可以拥有可以拥有“&gt;”的字符串在它们中这不起作用。您可以在此处了解更多信息:http://www.regular-expressions.info/repeat.html