正規表現:
!(<a.*</a>.*)*Paris!isU
置換:
$1<a href="Paris">Paris</a>
$1 は最初のサブパターンを参照します (少なくとも PHP では)。使用する言語によって、多少異なる場合があります。
これにより、「Paris」のすべての出現箇所が置換内のリンクに置き換えられます。「Paris」の前にすべての開始 a-Tags が閉じられたかどうかを確認するだけです。
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);
?>
添加:
これは最善の解決策ではありません。この正規表現が機能しない状況の 1 つは、a-Element 内にない img-Tag がある場合です。その画像の title-Attribute を「Paris」に設定すると、この「Paris」も置き換えられます。そして、それはあなたが望むものではありません。それにもかかわらず、単純な正規表現で問題を完全に解決する方法はありません。