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 :

[REGEXP] Problème de parsing d'une chaine


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut [REGEXP] Problème de parsing d'une chaine
    Bonjour à tous.

    C'est vraiment une question de débutant mais je suis un peu coincé. Même le tuto du cyberzoïde ne m'a pas résolu mon problème.

    Soit une chaine "PUBPrincipale/Salaries/Accueil-Salaries?packedargs=null"

    lorsque je la match en java avec ce pattern, j'obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Concordance 1: Début = 0, Fin = 13, Motif = PUBPrincipale
    Concordance 2: Début = 14, Fin = 22, Motif = Salaries
    Concordance 3: Début = 23, Fin = 39, Motif = Accueil-Salaries
    Concordance 4: Début = 40, Fin = 55, Motif = packedargs=null
    C'est pas si mal, sauf que je voudrait exclure à tout prix la chaine après le ? de mes concordances, soit n'avoir que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Concordance 1: Début = 0, Fin = 13, Motif = PUBPrincipale
    Concordance 2: Début = 14, Fin = 22, Motif = Salaries
    Concordance 3: Début = 23, Fin = 39, Motif = Accueil-Salaries
    Ce sont les résultats de mes tests avec RegexSR.

    Merci de votre aide.

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

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

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

    Une méthode serait de supprimer la fin de la chaîne :
    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
    17
    18
    19
    Pattern pattern = Pattern.compile("([^/&&[^\\?.+]])+");
     
    String s = "PUBPrincipale/Salaries/Accueil-Salaries?packedargs=null";
     
    int idx = s.indexOf('?');
    if (idx > -1) {
    	s = s.substring(0, idx);
    }
     
    Matcher matcher = pattern.matcher(s);
     
    while (matcher.find()) {
    	System.out.print(matcher.start());
    	System.out.print(" - ");
    	System.out.print(matcher.end());
    	System.out.print(" - ");
    	System.out.print(matcher.group());
    	System.out.println();
    }

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    Bonjour

    Merci de ta réponse

    Le problème, c'est que la chaine ?xxxxx=yyyy n'est pas toujours présente.

    Cette regexp va être intégrer en jsp d'entrée d'un site avec une très forte charge (une dizaine de millions d'inscrits) et je voudrais bien optimiser au maximum.

    D'autres idées donc ?

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Bonjour,

    Je pense que ceci fera ton affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                String data = "PUBPrincipale/Salaries/Accueil-Salaries?packedargs=null";
     
                Pattern pat = Pattern.compile("(([^/^\\?]+)(\\?.+)?)");
     
                Matcher match = pat.matcher(data);
                while (match.find()) {
                    System.out.println(match.group(2));
                }
    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    Merci beaucoup. Cela fonctionne;
    J'étais pas très loin

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

Discussions similaires

  1. parse d'une chaine de caractère
    Par dereck1333 dans le forum C
    Réponses: 10
    Dernier message: 19/11/2007, 17h27
  2. Réponses: 5
    Dernier message: 06/10/2007, 11h33
  3. Problèmes de conversion d'une chaine en double
    Par glycerine dans le forum Débuter
    Réponses: 3
    Dernier message: 31/07/2007, 15h05
  4. [regexp] supprimer la fin d'une chaine
    Par novices dans le forum Langage
    Réponses: 3
    Dernier message: 22/08/2006, 22h23
  5. problème d'accent dans une chaine
    Par dom_dev dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2006, 10h33

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