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 :

[Débutant(e)]Regex


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut [Débutant(e)]Regex
    Bonjour à tous,

    Voilà j'ai besoin de récupérer le corps de plusieurs méthodes dans un code source Java. Je pense faire en utilisant une expression régulière qui capture toute chaine de caractère se trouvant entre {..} mais également les {...} imbriquées. J'aimerais savoir si c'est réalisable et quel serait l'expression type pour ce genre d'opération ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 77
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [A-Za-z0-9;._:,=*()\\[\\]+-<>& ]*{[A-Za-z0-9;._:,=*()\\[\\]+-<>&{} ]*}[A-Za-z0-9;._:,=*()\\[\\]+-<>& ]*

  3. #3
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    Je pense qu'il y a un soucis:

    Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 30
    [A-Za-z0-9;._:,=*()\[\]+-<>& ]*{[A-Za-z0-9;._:,=*()\[\]+-<>&{} ]*}[A-Za-z0-9;._:,=*()\[\]+-<>& ]*
    ^
    at java.util.regex.Pattern.error(Pattern.java:1650)
    at java.util.regex.Pattern.closure(Pattern.java:2706)
    at java.util.regex.Pattern.sequence(Pattern.java:1798)
    at java.util.regex.Pattern.expr(Pattern.java:1687)
    at java.util.regex.Pattern.compile(Pattern.java:1397)
    at java.util.regex.Pattern.<init>(Pattern.java:1124)
    at java.util.regex.Pattern.compile(Pattern.java:840)
    at ec.ext.NodesCollator.readSource(NodesCollator.java:298)
    at ec.ext.NodesCollator.collate(NodesCollator.java:378)
    at ec.ext.NodesCollator.collate(NodesCollator.java:348)
    at ec.ext.ExtendedEvolutionState.collate(ExtendedEvolutionState.java:74)
    at ec.ext.ExtendedEvolutionState.evolve(ExtendedEvolutionState.java:89)
    at ec.Evolve.startFresh(Evolve.java:324)
    at ec.Evolve.main(Evolve.java:452)

  4. #4
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    Non en fait l'expression est bien compilable mais elle ne donne aucun résultat!

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 77
    Par défaut
    Pattern p;
    String s = "[A-Za-z0-9/;._:,=*()\\[\\]+-<>& ]+\\{[A-Za-z0-9/;._:,=*()\\[\\]+-<>&{} ]*\\}[A-Za-z0-9/;._:,=*()\\[\\]+-<>& ]*";
    p = Pattern.compile(s);
    if(p.matcher("fezfze{fezf;}efezf").matches())
    {
    System.out.println(true);
    }
    else
    {
    System.out.println(false);
    }

    // Voilà qui devrait marcher !!

  6. #6
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    Non en fait l'expression ne peut pas fonctionner car il reste un certain nombre de meta caractères dans ton expression typiquement les (), je vais rajouter quelques \\ et voir ce que ça donne.
    Merci quand même ça m'a donné quelques idées.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 77
    Par défaut
    Y a pas de quoi...

  8. #8
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    Voici l'expression correcte: plus compacte et plus complète!

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 77
    Par défaut
    et si tu as du code avant tes accolades ouvrantes ou fermantes ? çà ne passe pas !!

  10. #10
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Par défaut
    Oui mais comme je place au bon endroit dans mon code avant de récupérer le corps d'une méthode ça n'a aucune importance!

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

Discussions similaires

  1. Problème de débutant avec regex
    Par fandreoli dans le forum PL/SQL
    Réponses: 5
    Dernier message: 28/08/2014, 09h07
  2. débutant regex, récuperer infos page
    Par truitas dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 25/12/2009, 21h48
  3. [Débutant][Regex] Expression régulière adaptée
    Par hm1ch dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/06/2007, 21h50
  4. débutant regex expression reguliere
    Par mhamedbj dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2007, 18h44
  5. [débutant][Regex] changer "cage01.xml" en "cage N° 1
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 14/09/2004, 13h05

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