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 et occurence aléatoire


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut Regexp et occurence aléatoire
    Bonjour à tous, j'ai un petit problème !!!

    Je suis en train de parser un gros fichier texte.

    Le texte est de la forme

    /tag
    log:...
    log:....
    log:...
    /tag
    log:...
    log:....
    /tag
    log:...
    log:...

    J'ai donc tout d'abord coupé le fichier en blocs à l'aide d'une boucle, nommés $text_bloc[$i] commençant tous par le /tag. Ceci ne m'a pas posé de problème.

    Mon problème est le suivant:
    Dans chaque bloc de texte, je souhaite rechercher ce qui est écrit après chaque ligne commençant par log.
    Sur chaque bloc, je fais donc une regexp en recherchant le motif log et en mémorisant ce qui est contenu après jusqu'au saut de ligne.

    Le problème est que je dois affecter ce que je récupère à une variable dans le but de la réutiliser plus tard.

    Pour le moment j'ai écrit quelque chose comme ceci:

    my $motif = 'log';
    my $count =()=$text_bloc[$i]=~ m{$motif}g;
    Ceci me permet de récupérer le nombre d'occurence du tag log dans chaque bloc.


    J'ai pensé à déclarer une nouvelle boucle de type

    (k=0; k<=$count; k++)

    dans le but d'affecter à une nouvelle variable, par exemple $recover_text[$k] le contenu de l'occurence k du motif dans le bloc de texte original.

    Mais comment faire comprendre au script qu'à chaque tour de la boucle k, il faut passer à l'occurence suivante ?

    J'espère que ca semblera assez clair, moi-meme je m'y perds un peu, je remercies d'avance toutes les personnes qui pourront m'éclairer.

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il n'est pas utile de compter les occurrences, ni même de boucle pour remplir un tel tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $motif = qr{log(.*)};
    my @recover_tex = $text_bloc[$i] =~ m{$motif}g;
    (merci d'utiliser la balise [code] (icône ) pour poster du code).

    Ce qui une des grandes forces de perl, c'est de disposer nativement d'opérateurs sur les listes.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Bah ca fonctionne tout bien, merci beaucoup. désolé pour le non-respect de la forme, je ferai gaffe la prochaine fois !

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

Discussions similaires

  1. [RegExp] regexp test "au maximum x occurences "
    Par Xeuch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/06/2013, 11h00
  2. Toutes les occurences Regexp
    Par Anduriel dans le forum MATLAB
    Réponses: 4
    Dernier message: 08/08/2011, 10h19
  3. find + regexp + recup uniquement dernière occurence
    Par Invité dans le forum Shell et commandes GNU
    Réponses: 23
    Dernier message: 21/03/2011, 13h47
  4. [regexp] Remplacer une chaîne par une chaîne aléatoire
    Par endreillie dans le forum Langage
    Réponses: 9
    Dernier message: 28/10/2010, 12h15
  5. regExp ième occurence du masque
    Par HurtMarley dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2007, 10h34

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