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 :

Expression régulière et pattern match


Sujet :

avec Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 117
    Points : 219
    Points
    219
    Par défaut Expression régulière et pattern match
    Bonjour a tous,
    J'ai écrit la regexp suivante = ^%%(.+=.+/)+#.*%%$
    Ma chaine a analyser et la suivante : %%DA=toto/DU=TUTU/FE=coucou/#vide%%

    Ma méthode contient le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    		String regexp = "^%%(.+=.+/)+#.*%%$"
    		// Compile and use regular expression
    		Matcher matcher = Pattern.compile(regexp).matcher(s);
     
    		if (matcher.find()) {
    			// Get all groups for this match
    			for (int i = 1; i <= matcher.groupCount(); i++) {
    				String groupStr = matcher.group(i);
    				System.out.println("\t" + i + "=>" + groupStr);
    			}
    		}
    Le problème c'est qu'au lieu de me capturer :
    • DA=toto/
    • DU=TUTU/
    • FE=coucou/

    Il me capture DA=toto/DU=TUTU/FE=coucou/

    Auriez vous une idée?

    Merci d'avance

    Mon petit blog sans prétention : http://blog.octera.info/

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    On ne peut pas capturer plusieurs fois le même groupe de capture, donc déjà la méthode ne convient pas.

    Tu es bien obligé de capturer d'abord l'ensemble DA=toto/DU=TUTU/FE=coucou/

    Puis ensuite, rechercher dessus en boucle le pattern .+=.+/ pour séparer les trois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut,

    Tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String line = "%%DA=toto/DU=TUTU/FE=coucou/#vide%%";
    line = line.replaceAll("^%%(.+)/#.*%%$", "$1");
     
    String values[] = line.split("/");
    for (String value : values) {
    	System.out.println(value);
    }
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 117
    Points : 219
    Points
    219
    Par défaut
    Merci pour ta réponse, je ne savais pas que l'on ne pouvais capturer plusieurs fois avec le même groupe.
    Cela m'as permis d'économiser beaucoup de temps!

    @Nesmontou : C'est exactement ce que j'ai fait

    Mon petit blog sans prétention : http://blog.octera.info/

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

Discussions similaires

  1. [REGEX] expression régulière qui match tout les nombres sauf un
    Par neuromencien dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 28/05/2008, 08h21
  2. Réponses: 2
    Dernier message: 10/11/2006, 11h03
  3. Expressions régulières Java (matchs insuffisants)
    Par jemore dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2006, 19h55
  4. Expression régulière pattern
    Par viscere dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 30/05/2006, 13h47
  5. Réponses: 7
    Dernier message: 27/07/2005, 12h41

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