Bonjour à tous,

J'ai un casse tête qui nécessite l'aide de pro de l'expression régulière
Contexte : je dois enrichir un texte HTML en remplaçant certains mots par des liens. Par exemple, je dois remplacer "mot" par "<a href="...>mot</a>"

La difficulté c'est de ne pas rajouter des liens (1) dans des attributs de balise et (2) dans d'autres liens (imbrication de liens).

J'ai réussi à trouver une solution pour répondre le cas (1) mais le je n'arrive pas à traiter le cas (2).

Voici mon code simplifié :
String texte="exemple de texte <a>exemple de texte</a> exemple <a href='http://www.exemple.com'>un bel exemple</a>";

String mot_a_enrichir="exemple";
String pattern="\\b"+mot_a_enrichir+"\\b(?![^<>]*+>)"; //la partie "tordue" de la fin permet de ne pas toucher à des attributs
String lien="["+mot_a_enrichir+"]"; //pour plus lisibilité, le lien généré est remplacé par des crochets

System.out.println(texte.replaceAll(pattern,lien));

Le résultat est :
[exemple] de texte <a>[exemple] de texte</a> [exemple] <a href='http://www.exemple.com'>un bel [exemple]</a>

Dans le texte en rouge, je me retrouve avec deux liens imbriqués

Avez-vous une idée pour réaliser cette modification ?

Merci d'avance