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 Perl Discussion :

Regexp


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut Regexp
    Bonjour.
    J'utilise pas mal les regexp dans un de mes scripts, et le problème c'est que perl se mélange les pinceaux entre mes différents parenthésages.
    Je m'explique:
    J'utilise une première regexp avec parenthésage, je récupère ce que je veux dans $1 et $2, je range leurs contenus dans deux variables.
    Plus loin dans le même script j'utilise une autre regexp avec parenthésage, et là... je ne récupère pas toujours ce que je veux dans $1 et $2... Des fois c'est bon, et des fois c'est ce qu'il y avait avant (le résultat de la première regexp)... J'ai essayé de réinitialiser $1 et $2 avant, mais perl ne veut pas...
    Voici une partie de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    while (<FICHIER<){
     $nom_prenom =~ /^([A-Z]*)\s([A-Z][a-z]*)/o;
     $nom = $1;
     $prenoms = $2;
     #jusque là ça va
     /(.*)(\d{1,2}\s\d\d\s\d\d\d\d)\s{0,}$/o;
     if(defined $2){
       $date = $2; 
     # là ça va plus.... des fois c'est bien, des fois $2 vaut $prenoms
     # et du coup j'ai le prénom dans la date......
     }
    }
    Y a-t-il un moyen d'effacer le contenu des $1 $2 avant ma deuxième regexp?
    Je n'ai pas identifié ce qui faisait que des fois il faisait bien et des fois pas bien... Ca m'a l'air aléatoire...
    Merci de votre aide!

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while (<FICHIER<){
     ($nom,$prenoms) = $nom_prenom =~ /^([A-Z]*)\s([A-Z][a-z]*)/o;
     /(.*)(\d{1,2}\s\d\d\s\d\d\d\d)\s{0,}$/o;
        $date = $2;
      }
    }
    voilà, mais sache que le probleme c'est pas perl, mais c'est toi .
    Si perl recupere la même chose dans $2, c'est parcequ'il n'a pas matcher $2 dans ta deuxieme expression. 8)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut
    Oki merci je vais essayer ce que tu me dis.
    Je sais que des fois il ne le matche pas, et c'est pour ça que j'ai un if defined, parce que sinon je fais autre chose... et ainsi de suite....
    Pour info, je me doutais bien que ça venait de moi mais je ne voyais pas...

    Bon, en adoptant ta méthode pour ma date, il passe dans mon else!
    Merci beaucoup!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while (<FICHIER<){ 
     ($nom,$prenoms) = $nom_prenom =~ /^([A-Z]*)\s([A-Z][a-z]*)/o; 
      ($blabla,$date) = /(.*)(\d{1,2}\s\d\d\s\d\d\d\d)\s{0,}$/o; 
        if( not defined $date){
           # je continue mon traitement et ça marche!
    } 
      } 
    }
    Je ne voyais pas l'utilité de mettre directement les résultats des regexp dans les variables, maintenant si! Bon, il me reste à faire pareil pour toutes mes regexp pour être tranquille...
    Merci pour tout et surtout pour la rapidité de la réponse!

    Edit: tag résolu please

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    de rien. oublie pas le tag resolu.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut
    J'avais pas vu le bouton en bas...

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

Discussions similaires

  1. Vérification de formulaire avec regexp
    Par Shadow aok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/08/2007, 11h57
  2. [langage] [RegExp] Détecter un chemin Windows
    Par GLDavid dans le forum Langage
    Réponses: 3
    Dernier message: 01/09/2004, 14h57
  3. [langage] [RegExp] Récupérer une portion de phrase
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2004, 22h01
  4. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 09h29
  5. regexp
    Par mathieu gérard dans le forum ASP
    Réponses: 4
    Dernier message: 02/10/2003, 18h05

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