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 :

après un problème, un coup de gueule!


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut après un problème, un coup de gueule!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     while (<INFILE>) { next unless /numero=(.*?) telephonne/gx; 
    print OUTFILE "$1\n";
    }
    avec cette syntaxe il trouve bien ce que je cherche dans INFILE et ecrit ce que je veux dans OUTFILE seulement il ne trouve cette expression régulière seulement une fois par ligne, il veut qu'il y ait un retour chariot entre chaque expression en fait....
    Comment faire pour trouvé vraiment partout et autant de fois que nécessaire dans chaque lignes du fichier?

    J'espère être assez clair...
    Si quelqu'un pouvait me donner directement un exemple de code ça serait vraiment sympa...

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    chaque occurrence de ton expression est trouvée, c'est juste que tu n'écris dans le fichier que la première... c'est à ça que sert le $1...

    tu as plusieurs solutions ensuite pour régler ça, commence par exemple par chercher comment on parcourt toutes les occurrences d'un pattern

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    désolé de te contredire mais la on est dans une boucle donc le $1 avec le next unless ça écrit bien plusieurs choses dans mon fichier, d'ailleurs c'est le cas... mais quand j'ai plus d'une fois l'expression recherché dans la même ligne il ne trouve pas les suivantes, je sait pas pourquoi...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    en gros ce que donne mon code actuellement: (exemple du INFILE)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    numero=0123456789 telephonne 
    trhtrhtrhtrhtrhfdfg numero=0987654321 telephonne 
    numero=0111111111 telephonne dfgdfhgdfhdfhdfhfd numero=0222222222numero=0555555555 telephonne telephonnedgfdgdfsghnumero=03333333333 telephonne 
    numero=0444444444 telephonne
    AVEC CE INFILE LE OUTFILE SERAS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    0123456789
    0897654231
    0111111111
    0444444444
    ET JE VOUDRAIS EN OUTFILE;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    0123456789
    0897654231
    0111111111
    0222222222
    0555555555
    0333333333
    0444444444

  5. #5
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    je reprends, plus clairement:

    $1 ne désigne que la première occurrence de ton pattern dans ta ligne, donc quoiqu'il arrive tu n'imprimeras pas toutes tes occurrences en l'utilisant

    de plus ton expression régulière est incorrecte, elle ne reconnaîtra par exemple pas
    numero=0222222222numero=0555555555
    et comme je vais pas te mâcher le travail je te laisse trouver le reste.
    Il te suffit juste de modifier ta façon de récupérer toutes tes occurrences (liste, vous avez dit liste ?) et à changer ton expression régulière (indice: \d)

    bon courage et bon week end

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    si je demande comment faire c'est pas pour qu'on me dise de chercher....
    De plus pour apprendre, rien ne vaut l'exemple///
    Je me doute bien qu'il faut que je modifie mon expression
    une liste oui je connais le @
    ca fait une semaine que je me suis mis au perl alors je vois pas ce que je peut faire avec une liste je dois déclarer mon expression reguliere comme liste??
    Allez STP un exemple comme ça après je saurais faire...

    Merci qd mem je CONTINUE a chercher, car avant de poster j'ai évidement chercher...

Discussions similaires

  1. [Coup de gueule] Appel à la modération.
    Par r0d dans le forum Politique
    Réponses: 74
    Dernier message: 18/07/2006, 15h18
  2. Réponses: 1
    Dernier message: 31/05/2006, 11h27
  3. [Technologie Serveur]Laquelle choisir d'après mon problème ?
    Par Mig28 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 22/02/2006, 15h40

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