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

Langage Java Discussion :

Expression régulière : groupes


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 22
    Points
    22
    Par défaut Expression régulière : groupes
    Bonjour,
    au boulot un collègue m'a demandé un peu d'aide sur les expressions régulières. Il m'a demandé comment récupérer l'ensemble des groupes de 2 caractères contenu dans un mot.

    Par exemple, pour le mot "java", on récupère "ja", "av" et "va".

    Je sais le faire sans utiliser de regex mais je n'arrive pas à le faire avec.
    Est ce que vous avez une idée?

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Les regex sont utiles lorsque tu matches un pattern, ex: je veux "toto" dans ce paragraphe, je veux "<quelque chose qui ressemble à toto, comme titi ou tata>". Si c'est juste pour découper une phrase en suite de 2 lettres, les regex ne te seront pas utile.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    oui il y a des façons plus simple de le faire mais juste pour le plaisir de tester, je me demandais si c’était possible avec une regex.
    en utilisant ce site http://www.regexplanet.com/advanced/java/index.html
    et entrant la regex (?=(..)) , on dirait que l'on peut obtenir ce que je veux mais quand je test en java, ça ne marche pas.

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Je ne sais pas quel pattern tu as utilisé pour obtenir ce que tu souhaites, mais généralement entre ce genre d'outil et la chaine de ton programme Java tu dois gérer les anti-slashs de la chaine Java (ton programme). Il me semble que planetregex le fait, regarde bien le tableau, tu as "Regular Expression" / "as a Java string".
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par spoun95 Voir le message
    je teste en java, ça ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    final Matcher matcher = Pattern.compile("(?=(..))").matcher("java");
    while ( matcher.find() ) {
       System.out.println(matcher.group(1));
    }
    affiche pourtant :
    ja
    av
    va
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup @joel.drigo, ça marche nickel, j'utilisais ce code que j'avais trouvé dans la doc http://cyberzoide.developpez.com/tutoriels/java/regex/:
    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
     
    // compilation de la regex
    Pattern p = Pattern.compile("(a((b)(c)))");
    // création d'un moteur de recherche
    Matcher m = p.matcher("abc");
    // lancement de la recherche de toutes les occurrences
    boolean b = m.matches();
    // si recherche fructueuse
    if(b) {
        // pour chaque groupe
        for(int i=0; i <= m.groupCount(); i++) {
            // affichage de la sous-chaîne capturée
            System.out.println("Groupe " + i + " : " + m.group(i));
        }
    }

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ce code ne te donnait aucun résultat à cause du test de matches() : la chaîne "java" ne matche pas l'expression régulière "(?=(..))" !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/06/2011, 18h34
  2. extraction de groupe d'une expression régulière
    Par TaymouWan dans le forum C#
    Réponses: 9
    Dernier message: 22/05/2009, 18h09
  3. extraction des groupe des expression régulières
    Par TaymouWan dans le forum C#
    Réponses: 4
    Dernier message: 22/05/2009, 12h27
  4. Expressions régulières et groupes capturants
    Par ®om dans le forum Langage
    Réponses: 1
    Dernier message: 09/01/2008, 15h37
  5. [Regex] Expressions régulières: sous groupe
    Par debdev dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 07/07/2005, 14h10

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