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

avec Java Discussion :

Expression regulière


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Expression regulière
    Hello!

    J'interroge une page web et je dois récupérer tous les titres des annonces. Le problème que j'ai c'est que ça ne trouve qu'une seule occurence, et c'est la toute première de la page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [...]
    <h2 class="object-title">
    						titre de l'annonce 1
    					</h2>
    [...]
    <h2 class="object-title">
    						titre de l'annonce 2
    					</h2>
    [...]
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Pattern p = Pattern.compile(".*?<h2 class=\"object-title\">(.*?)</h2>.*?", Pattern.DOTALL|Pattern.MULTILINE);
        Matcher m = p.matcher(html);
        if (m.matches()) {
          System.out.println(m.groupCount()); // = 1
          System.out.println("vrai: "+ m.group(1).trim()); // Affiche le résultat
        }
    Pourquoi ? Et comment me retourner tous les résultats ?

    Merci d'avance :-D

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bonjour,

    Parce que tu utilises matches(), qui demande comme son nom l'indique, si tout la page arrive à valider l'expression régulière. La valider une fois, donc, et entièrement.
    Tu devrais notamment t'être rendu compte que tu fais un if(), donc pas une boucle, et que tu ne peux donc exploiter qu'un seul résultat.

    Si tu veux chercher toutes les parties de la page qui valident l'expression régulière, il te faut boucler sur find(). Auquel cas il n'est pas utile de commencer et terminer l'expression régulière par des jokers. Ça c'était seulement pour valider la page entière une seule fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Super ça fonctionne merci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Pattern p = Pattern.compile("<h2 class=\"object-title\">(.*?)</h2>", Pattern.DOTALL|Pattern.MULTILINE);
        Matcher m = p.matcher(html);
        while(m.find()) {
          System.out.println(m.group(1).trim());
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche recursive à l'aide des expressions reguliére
    Par titoff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/12/2005, 16h42
  2. [RegEx] aide pour une expression regulière
    Par hugo123 dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2005, 15h41
  3. ET dans une expression regulière
    Par kesako dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 12h57
  4. Problème expression regulière ??
    Par panaone dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 13h41
  5. Variables et Expression Regulière
    Par Temari dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 01h55

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