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

Collection et Stream Java Discussion :

Expressions régulières pour filtrer du code HTML


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Par défaut Expressions régulières pour filtrer du code HTML
    Bonjour,

    J'essaye de réaliser une méthode pour isoler des fragments de code HTML, en utilisant les expressions régulières (javax.regex.Pattern)

    Exemple tout bête : je voudrais isoler les balises A sur le fragment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <a href="www.google.fr">
      google
    </a>
    <p>
      Blah blah blah
    </p>
    <a href="www.exalead.com">
      exalead
    </a>
    J'ai essayé l'expression régulière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern.compile("<a[\\s]+[^>]*>.*</a>");
    Le problème est que le résultat part de la balise ouvrante google , et se termine à la balise fermante exalead...

    Comment peut-on préciser au Pattern de ne pas capturer de balise fermante </a> ?
    J'ai bien essayé celle ci, mais cela ne marche pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern p = Pattern.compile("<a[\\s]+[^>]*>[^(</a>)]*</a>");

    Autre question : J'ai essayé ma première expression régulière avec DreamWeaver et Notepad++ , lesquels me renvoient une absence de résultat.

    => Est-ce Java qui ne respecte pas la norme POSIX ?

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Ayant été confronté au même problème, j'ai aussi pensé à faire un ^(</a>), mais en fait le ^ (sauf) ne s'applique que sur un caractère (^abc ça ne veut pas dire sauf la chaine abc, mais sauf le car a, le car b et le car c).

    Donc j'ai utilisé (c'est du bidoullage) [^<]* au lieu du .* entre tes 2 balises...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Par défaut
    J'ai déja utilisé une solution de bidouille comme ca , mais la je ne peux pas ...

    Cette solution marche quand tu sais que tes balises n'en contiennent pas d'autres, suppose que tu essayes d'isoler la balise p dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <body>
      <p>
        <a href="#">blah</a>
      </p>
    </body>
    utiliser [^<]* aurait pour effet de ne rien retourner puisque le parser se trouverait dans l'impossibiliter de faire un match avec <a href=...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    Je suis en train de galèrer sur une expression régulière et je tombe sur ton sujet en faisant une recherche, je pense que j'avais créée un sujet un peu similaire (a moins que j'ai mal compris ce que tu cherches a faire) il y a quelques temps et j'avais obtenu une reponse.
    Si tu cherches bien a exclure une chaine du pattern, il faut utiliser un assertion arrière négative, regarde l'explication qu'on ma donné dans le sujet :

    http://www.developpez.net/forums/sho...d.php?t=169805

    Voila, j'espere que ca peut aider

Discussions similaires

  1. [RegEx] Expression régulière pour code HTML et saut de ligne
    Par mastergalaxy dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2014, 08h54
  2. Réponses: 7
    Dernier message: 02/11/2010, 13h36
  3. Expression régulière pour nettoyer HTML
    Par jeyce dans le forum Langage
    Réponses: 0
    Dernier message: 16/02/2010, 23h47
  4. [RegEx] Expression régulière pour les balises HTML
    Par meloo dans le forum Langage
    Réponses: 3
    Dernier message: 09/07/2009, 15h23
  5. Expressions régulières pour rechercher dans le code
    Par Davboc dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 20/11/2007, 11h03

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