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

API standards et tierces Java Discussion :

Expressions rationnelles problème de délimiteurs


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kayzra
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut Expressions rationnelles problème de délimiteurs
    Bonjour, j'utilise java.util.regex avec se pattern afin de récupérer des infos sur une page html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern pattern = Pattern.compile("title=\"[\\w]*[^\\f{\"}]*");
    J'arrive à récupérer les infos que je veux mais je récupère au début de chaque info le délimiteur de départ (title=\") et je n'ai pas jusqu'ici réussit à le supprimer en améliorant mon pattern.

    Comment modifier mon pattern afin de ne récupérer que les infos comprises entre title=" et " sans avoir title=" devant?

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Pattern p = Pattern.compile("title=\"([\\w]*[^\\f{\"}]*)\"");
    Matcher m = p.matcher("<div title=\"Ha je suis fort !\" >");
    while (m.find()) {
    	System.out.println(m.group(1));
    }
    Comme tyu le remarques, j'ai encadré la partie entre guillements avec des parenthèses:
    \"(......)\"
    Ensuite, m.group() (equivalente à m.group(0)) te retourne toute la chose (title="....."), tandis que m.group(1) te retourne juste ce qui est entre parenthèses.

    Voilou voili !
    Bonne chance.

  3. #3
    Membre confirmé Avatar de kayzra
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    merci djo.mos ça marche nickel

    Mais je pensais que l'on pouvait le faire avec une negation (^\title=\") est ce que c'est possible?

    En tout cas je me suis cassé les pied à essayer!!!

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    huh
    Nop, faudrait réviser ses cours sur:
    - Les expressions règulières en général: le ^ n'est pas uniquement l'opérateur de négation, et comme tu le sites, c'est plutôt l'indiquateur de début de phrase.
    - Sur l'API des expressions règulières de Java. Sur ce coup, y'a l'excellent cours de Cyberzoide. Ce te permettrait en général de savoir ce que l'on peut faire avec le RegExp et ce qu'on ne peut pas faire.

    Voilou, bonne chance.

Discussions similaires

  1. Problème d'expression rationnelle
    Par madndf dans le forum PureBasic
    Réponses: 1
    Dernier message: 23/08/2012, 19h31
  2. Problème avec une expression rationnelle.
    Par Pragmateek dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/06/2006, 20h34
  3. [expression réguière]problème pour un montant
    Par bakonu dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/03/2005, 10h13
  4. Réponses: 2
    Dernier message: 21/02/2005, 10h42
  5. [langage] Expressions rationnelles (perl/C)
    Par ma2th dans le forum Langage
    Réponses: 11
    Dernier message: 02/08/2004, 18h07

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