Sed非贪心匹配:匹配第一个xml节点

时间:2011-02-15 19:30:40

标签: regex sed non-greedy

跟进此question

$test = "sed -n '1h;1!H;\${;g;s/<item=\"".$name.".*</\item>/".trim(xml)."/g;p;}' ".$file;
exec($test,$cmdresult);

执行此命令以查找具有指定名称的所有xml节点作为变量传递。这里唯一的问题是匹配超出了初始</item>到下一个节点,最后到了最后</item>

如何让这种非贪婪?

1 个答案:

答案 0 :(得分:2)

有时使用负面类比非贪婪匹配更好。它允许更精细的控制,并且更有效。 I.E.为了匹配所有但没有标记关闭你可以做[^>;] *。虽然你可以拥有可以拥有“&gt;”的字符串在它们中这不起作用。您可以在此处了解更多信息:http://www.regular-expressions.info/repeat.html

相关问题