1

跟进这个问题

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

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

我如何使这个不贪婪?

4

1 回答 1

2

有时使用负类比使用非贪婪匹配更好。它允许更精细的控制并且效率更高。IE 匹配所有内容,但不标记关闭,您可以执行 [^>]*。虽然如果你可以有可以在其中包含“>”的字符串,这将不起作用。您可以在这里阅读更多内容:http ://www.regular-expressions.info/repeat.html

于 2011-02-15T19:37:09.870 回答