IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

REGEX : ajout de liens dans un texte HTML


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut REGEX : ajout de liens dans un texte HTML
    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

  2. #2
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    Je pense que le problème va plus loin, tu n'y arriveras pas avec uniquement une ou plusieurs expressions régulières, au mieux cela marchera sur un cas particulier ou deux...
    A mon avis il faut utiliser un HTML Parser en java (y a des API qui existe) et modifier les éléments HTML qui peuvent l'être suivant tes règles. Typiquement je dirais que le remplacement est valable dans certaines élément html : <span> <div> <h> ... mais pas les <a> <input>...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 62
    Points
    62
    Par défaut
    Voilà qui pourra peut-être t'aider pour la deuxième partie :
    http://www.developpez.net/forums/d71...er-mots-liens/

    Mais j'ai peur que comme le disait NicoL__ il te faille utiliser autre chose que les regex car ici, cette regex risque d'annuler l'effet de la première :/

    Bonne chance !

Discussions similaires

  1. Réponses: 22
    Dernier message: 28/08/2011, 23h12
  2. [Info] Ajouter un lien dans eclipse
    Par eXiaNazaire dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/03/2006, 09h44
  3. [HTML] Je doit ajouter des 3D dans mes Email HTML
    Par Higestromm dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 22/03/2006, 17h18
  4. Réponses: 2
    Dernier message: 03/02/2006, 19h08
  5. Réponses: 7
    Dernier message: 14/09/2005, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo