正则表达式:
!(<a.*</a>.*)*Paris!isU
替换:
$1<a href="Paris">Paris</a>
$1 指的是第一个子模式(至少在 PHP 中)。根据您使用的语言,它可能会略有不同。
这应该用替换中的链接替换所有出现的“巴黎”。它只是检查所有打开的 a-Tag 在“Paris”之前是否已关闭。
PHP 示例:
<?php
$s = 'i\'m living <a href="Paris" atl="Paris link">in Paris</a>, near Paris <a href="gare">Gare du Nord</a>, i love Paris.';
$regex = '!(<a.*</a>.*)*Paris!isU';
$replace = '$1<a href="Paris">Paris</a>';
$result = preg_replace( $regex, $replace, $s);
?>
添加:
这不是最好的解决方案。此正则表达式不起作用的一种情况是当您有一个 img-Tag 时,它不在 a-Element 内。当您将该图像的标题属性设置为“巴黎”时,该“巴黎”也将被替换。这不是你想要的。尽管如此,我认为无法使用简单的正则表达式完全解决您的问题。