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 :

Regex réussi, mais insuffisante.


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
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Par défaut Regex réussi, mais insuffisante.
    Bonjour à tous,

    J'ai éffectué une regex en utilisant le code suivant:
    String Parser, contient ma regex.
    String code source, contient le code source de la page à parser.
    Int index, contient le numéro de l'index qui contient le résultat que je veux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        public String Parse(String Parser, String CodeSource, int index)
        {
            String ResultatParsage = new String();
     
            mpattern = Pattern.compile(Parser);
            mmatcher = mpattern.matcher(CodeSource);
            if(mmatcher.find())
            {
            ResultatParsage = mmatcher.group(index);
            }
            else{
                ResultatParsage = null;
            }
     
     
            return (ResultatParsage);
        }
    Bon ce code marche très bien pour les regex simples (qui ont pour équivalent le preg_match en php).

    Seulement j'aurais besoin de l'équivalent du preg_match_all. Et malgré mes recherches je n'ai point trouvé

    Je voudrais en fait parser un code source et y récupérer, (par exemple), tout les prénoms contenus dans des balises html <p>.
    Mon code ne récupère malheureusement que le premier prénom.

    Je vous remercie de l'aide que vous pourriez m'apporter.

    Amicalement marsupio,

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    avec matcher.groups() t'as le nombre de groupes qui otn matché, ensuite tu boucle la dessus pour récupérer tout de 1 à n.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Par défaut
    Bonsoir tchize_
    Merci beaucoup de ta réponse mais si je rajoute la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(mmatcher.groupCount());
    il me retourne le chiffre 1.
    Et si je boucle dessus il me retourne la phrase qui contient le premier prénom (pour garder mon exemple des prénoms), c'est l'index 0. Puis le premier prénom, c'est l'index 1. et.. c'est tout.

    J'ai testé ma regex avec un preg_match_all en php et elle me retourne bien tout mes prénoms, ce qui m'indique que ma regex est pourtant correcte.

    J'ai peut-être mal compris la solution que tu me donnais, si telle est le cas je m'en escuse et dans ce cas serait t'il possible d'avoir plus de précision s'il te plait :s
    désolé pour le dérangement.

    bonne soirée

    Amicalement marsupio,

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    toutes mes excuse, je pensais que tu voulais toutes tes parenthèses :p

    Si tu veux matcher plusieurs fois la meme regexp sur un texte, une fois que tu as un matcher tu fait ceci

    1) tu faite un group(index) pour récupérer ce qui t'intéresse
    2) si matcher.find() retourne true, tu recommence en 1 pour le nième match.

    (voir la doc de Matcher.find(), en gros çà recommence un match là ou le précédent s'était arrêté)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Par défaut
    Bonjour tchize_ et merci beaucoup de ton aide.
    j'ai réussi en suivant tes conseils et cela fonctionne niquel

    Bonne journée et encore merci.

    Amicalement marsupio,

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

Discussions similaires

  1. [RegEx] Regex simple mais qui ne fonctionne pas comme il faut
    Par yagami77 dans le forum Langage
    Réponses: 1
    Dernier message: 08/01/2011, 23h27
  2. 2005 : Plan de maintenance réussi, mais échec !
    Par tivain dans le forum Administration
    Réponses: 13
    Dernier message: 17/05/2010, 17h41
  3. [Upload] images uploadées réussi mais ..
    Par body72 dans le forum Langage
    Réponses: 4
    Dernier message: 07/04/2008, 19h15
  4. "Insertion Données réussie" mais pas de données inscrites ?
    Par D4rkTiger dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 14/09/2007, 13h33
  5. [Upload] Upload réussi mais pas vraiment
    Par Roromix dans le forum Langage
    Réponses: 11
    Dernier message: 26/03/2007, 16h25

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