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 :

Expression régulières : conditions dynamique


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut Expression régulières : conditions dynamique
    Bonjour,

    J'ai besoin de pouvoir traiter une chaine ayant le format suivant :

    TT{CHAINE1}__{CHAINE2}{CHAINE3}!!{CHAINE1}__{CHAINE2}{CHAINE3}!!{CHAINE1}__{CHAINE2}{CHAINE3} .....


    Le pattern {CHAINE1}__{CHAINE2}{CHAINE3} peut être répété jusqu'à 6 fois.

    Pour extraire {CHAINE1}__{CHAINE2}{CHAINE3} j'ai utilisé cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        private static final Pattern patternXXXXXX = Pattern.compile(
     
                "^TT"                            // DEBUT CHAINE      
        		+ "(\\d{1,6})"             // CHAINE1
        		+ "__"
                + "(\\d{2})"                    // CHAINE2
                + "(\\w{3})"                    // CHAINE3
                +"$");                          // Fin du message

    Je ne vois pas, par contre comment modifier cette expression afin de pouvoir capter toute les occurences de {CHAINE1}__{CHAINE2}{CHAINE3}.


    Merci d'avance pour vos conseils !!!

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Bonjour, qu'est ce qui t'empêche de mettre {CHAINE1}__{CHAINE2}{CHAINE3} directement dans Pattern.compile(); ?

    C'est à dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Pattern pattern = Pattern.compile({CHAINE1}__{CHAINE2}{CHAINE3});
    Matcher matcher = pattern.matcher("ma longue phrase avec les chaines que je cherche ...");
    while (matcher.find()) {
      ...
    }
    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Bonjour, qu'est ce qui t'empêche de mettre {CHAINE1}__{CHAINE2}{CHAINE3} directement dans Pattern.compile(); ?
    Certainement parceque d'après l'exemple qu'il a posté CHAINE1, CHAINE2 et CHAINE3 sont des exemples, que leur vraie valeur va varier et que le but est justement de récupérer ces valeurs.

    Si on veux capter toutes les ocurences, il faut enlever le '^' et le '$' qui indiquent le début et la fin de chaine.
    Ensuite il te faut itérer avec find comme dans l'exemple de paissad

    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
        private static final Pattern patternXXXXXX = Pattern.compile(
     
                "^TT"                            // DEBUT CHAINE      
        		+ "(\\d{1,6})"             // CHAINE1
        		+ "__"
                + "(\\d{2})"                    // CHAINE2
                + "(\\w{3})"                    // CHAINE3
                +"$");                          //
     
        Matcher matcher = pattern.matcher(chaineALire);
        while (matcher.find()) {
            String chaine1 = matcher.group(1);
            String chaine2 = matcher.group(2);
            String chaine3 = matcher.group(3);
            ...
        }

Discussions similaires

  1. Expressions régulières : conditions sur caractères avant/après
    Par NicoV dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 27/05/2011, 10h45
  2. expression régulière créée dynamiquement
    Par airod dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/01/2010, 22h15
  3. Expression régulière - exclure une condition
    Par fleurparis dans le forum VBScript
    Réponses: 0
    Dernier message: 18/12/2009, 15h50
  4. Réponses: 2
    Dernier message: 07/08/2008, 21h51
  5. Réponses: 6
    Dernier message: 17/08/2005, 12h38

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