子模式的重复将重复其中包含的条件,并使用迭代更新子模式匹配。
考虑以下代码,它扫描 HTML,跟踪尖括号“<” “>”。如果开括号“<”匹配,则闭括号“>”必须在重复可能结束之前跟随。这样,正则表达式将有效地仅匹配标签之外的内容。
<?php
$pattern='%(*ANY)(.*?(<)(?(2).*?>)(.*?))*?\'\'%s';
$replace='\1Fred';
$subject=
'<html><body class=\'\'>\'\' went to '\'\meyer and ran
into <b>\'\'</b>.
</body></html>'
echo preg_replace("%(*ANY)(.*?((<)(?(3).*?>).*?)*?)\'\'%s",'\1Fred',$subject);
?>
输出将是
'<html><body class=\'\'>Fred went to Fredmeyer and ran
into <b>Fred</b>.
</body></html>'