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 :

[ REGEXP ] Dynamique/Recurssive


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 [ REGEXP ] Dynamique/Recurssive
    Bonjour,

    Est il possible de mettre en place une expression régulière pouvant traiter ce genre de cas :

    chaine de caractère : E 0808088 |E 22 |E DDASAS ...........

    Remonter dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     matcher.group(1) = 0808088 
     matcher.group(2) = 22
     matcher.group(3) = DDASAS 
    .....

    sachant que le nombre d'occurrence est indéfini. Par contre le séparateur sera toujours le même.

    Merci d'avance !

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Essayes ceci:

    Mais les expressions régulières ne doivent pas être la solution à tout, les méthodes de String peuvent etre utile la aussi.

  3. #3
    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
    J'ai pas trouvé mieux que ca en utilisant les methodes de String ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     String[] listNum = cmd.trim().split("|E");
     
                //traitement premier cas
                String[] num1 = new String[2] ;
                if(listNum[0].contains(" ")){
                    num1 = listNum[0].trim().split("\\s");
                    addInfo(num1[1]);
                }else {
                    addInfo(listNum[0].substring(1));
                }
    //Autres cas        
                for(int i =1;i<listNum.length;i++){
                    addInfo(listNum[i]);
                }

    Aurais tu une meilleure idée?

    Merci d'avance !

  4. #4
    Membre éprouvé Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Par défaut
    String.split() utilise les expressions rationnelles (pas régulières) : si ton délimiteur est simple il vaut mieux utiliser un StringTokenizer. Deuxième remarque : ton délimiteur est | et non pas "|E" qui va supprimer les E à partir de ta deuxième occurence mais pas ton premier ce qui t'oblige à traiter deux cas différents. Voilà un code plus propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    		String str = "E 0808088 |E 22 |E DDASAS";
    		List<String> r = new ArrayList<String>();
     
    		StringTokenizer st = new StringTokenizer(str, "|");
    		while(st.hasMoreTokens()) {
    			String token = st.nextToken();
    			if(token.startsWith("E ")) {
    				r.add(token.substring(2).trim());
    			} else {
    				// ???
    			}
    		}
    		System.out.println(r);

  5. #5
    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
    Merci pour les conseils

  6. #6
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Mais as tu essayé la regex que je t'ai envoyé? Il me semble que sur l'exemple que tu as fourni, elle passe bien.

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

Discussions similaires

  1. [RegExp] Regexp de façon dynamique
    Par super_baltazar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/05/2014, 17h21
  2. Procédures stockées, prepared statement et regexp dynamique
    Par flotho dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/01/2012, 01h32
  3. [RegExp]Contrôle dynamique de champs
    Par mLk92 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/05/2008, 18h48
  4. [RegEx] Variable dynamique dans une Regexp
    Par therebirthed dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2007, 23h33
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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