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 :

Problème avec les expressions régulières


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Problème avec les expressions régulières
    Bonjour à tous,

    Je viens vers vous car je n'arrive pas à utiliser correctement les expressions régulières (je n'ai sûrement pas le bon pattern) même après avoir vu pas mal d'exemples...

    J'ai la string suivante :
    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
    19
     
     
    String s = "sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
     
     
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
     
     
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"
    sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\"sdrgfrfgdgdrgdr gergt dgter gterge trg r name=\"coucou\""
    J'aimerai pouvoir récupérer la valeur coucou de mon attribut name dans toutes les occurences trouvées sachant que cette string se trouve dans un fichier texte et donc qu'il n'y a pas de déspécialisation du caractère " (=> pas de \", simplement ").

    A la rigueur le fait que la string se trouve dans un fichier texte ou non a peu d'importance, car le principe est le même.

    J'ai donc utilisé les groupes via le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private static String myCustomizedPattern = "(((name=)(\")(.*)(\")))";
     
                                    Pattern p = Pattern.compile(myCustomizedPattern);
    				Matcher m = p.matcher(s);
     
    while(m.find())
    {
          XMLContent+="\n"+m.group(5);			
    }
    En l'état, le résultat est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    coucou
    coucou
    coucou
    coucou
    coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou
    coucou
    coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou
    coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou
    coucou
    coucou
    coucou
    coucou
    coucou"sdrgfrfgdgdrgdrgergtdgtergtergetrgrname="coucou
    Des idées ? Merci d'avance (et désolé pour la longueur !)

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    L'expression .* veut dire "n'importe quel caractère, zéro ou plusieurs fois, et autant de fois que possible".

    Par conséquent, il n'a aucune raison de s'arrêter sur le premier " puisque ça compte aussi comme n'importe quel caractère. Il va s'arrêter sur le dernier. Logique.

    On dit que l'étoile * est un opérateur greedy, parce qu'il est cupide, il prend autant qu'il peut.
    Il te faut l'opérateur *? qui est reluctant, réticent à prendre plus que le minimum nécessaire.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par thelvin Voir le message
    L'expression .* veut dire "n'importe quel caractère, zéro ou plusieurs fois, et autant de fois que possible".

    Par conséquent, il n'a aucune raison de s'arrêter sur le premier " puisque ça compte aussi comme n'importe quel caractère. Il va s'arrêter sur le dernier. Logique.

    On dit que l'étoile * est un opérateur greedy, parce qu'il est cupide, il prend autant qu'il peut.
    Il te faut l'opérateur *? qui est reluctant, réticent à prendre plus que le minimum nécessaire.
    Merci 1 milliard de fois, ça marche !!

    Une chose est sûre, je vais retenir ce que tu viens de m'apprendre!

    Merci encore et bonne soirée !

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

Discussions similaires

  1. [RegEx] problème avec les expression régulières
    Par Medmidou dans le forum Langage
    Réponses: 1
    Dernier message: 02/10/2007, 18h35
  2. Problème avec les expression régulière
    Par fouyou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 04/07/2007, 18h19
  3. [C#] problème avec les expressions régulières
    Par luimême dans le forum C#
    Réponses: 1
    Dernier message: 13/06/2007, 15h44
  4. [VB.net][vs2005] Problème avec les expressions régulières
    Par zouhib dans le forum Windows Forms
    Réponses: 13
    Dernier message: 22/06/2006, 15h56
  5. Problème avec les expressions régulières
    Par Premium dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 18/06/2006, 16h41

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