Регулярные выражения не заменяют. Языки делают.
Языки и библиотеки также будут читать из базы данных или файла, в котором содержится список слов, которые вам интересны, и связывать URL с их именем. Вот простейшая замена, которую я могу себе представить, используя мое регулярное выражение (perl используется для синтаксиса replace ).
s/([a-z-']+)/<a href="http:\/\/en.wikipedia.org\/wiki\/$1">$1<\/a>/i
Собственные имена могут работать лучше:
s/([A-Z][a-z-']+)/<a href="http:\/\/en.wikipedia.org\/wiki\/$1">$1<\/a>/gi;
Конечно, "Батон-Руж" станет двумя ссылками для:
<a href="http://en.wikipedia.org/wiki/Baton">Baton</a>
<a href="http://en.wikipedia.org/wiki/Rouge">Rouge</a>
В Perl вы можете сделать это:
my $barred_list_of_cities
= join( '|'
, sort { ( length $a <=> $b ) || ( $a cmp $b ) } keys %url_for_city_of
);
s/($barred_list_of_cities)/<a href="$url_for_city_of{$1}">$1<\/a>/g;
Но, опять же, это язык , который реализует набор операций для регулярных выражений, регулярные выражения ничего не делают. (На самом деле, это настолько распространенное приложение, что я был бы удивлен, если бы где-нибудь не было модуля CPAN , который бы делал это, и вам просто нужно загрузить хеш.