子模式的重复将重复其中包含的条件语句,并使用迭代更新子模式匹配。
考虑以下代码,它扫描 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>'