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 :

Extraire du texte formaté dans un tableau


Sujet :

Langage Perl

Vue hybride

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut Extraire du texte formaté dans un tableau
    Bonjour,

    Je suis débutant en perl et j'espère que quelqu'un pourra me donner des billes pour terminer mon programme.

    Je dois analyser un fichier de log, et pour le moment j'arrive à la situation suivante:

    Je stocke dans une variable un paragraphe tel que ci dessous:

    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
    20
    21
    22
    23
     
    {  -- SEQUENCE --
      User Label 
      {
        H26
      }
      Message Text 
      {
        SIG *N=  332/10-04-29/17-05-53/H26         /H26     /D/AA/ES_ESRE
        +/VER ATH3/ZA_WAM  / 17509
        +/FIN OU ABANDON DE SESSION                / ORIGFAIL=WX0000
        +/SESSION DE DIALOGUE AUTOCONNEXION / TERMNAME=TERMPAD0
        +/OPERNAME=                 / DSESSNB=    1 / SLFCNCN=    0
      }
      NE Function 
      {
        ZSOP
      }
      NE Edition Class 
      {
        1
      }
    }
    Le paragraphe est divisé en section de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [nom]
    {
      [Valeur]
    }
    Je souhaiterais donc récupérer ces informations dans un tableau afin de pouvoir les traiter.

    Si quelqu'un peu m'aider sur cela.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Trouvé!!

    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
    20
    21
    22
    23
     
    #préparation de la séquence
    			$sequence =~ s/{/;/g; # converti { en ;
    			$sequence =~ s/}/;/g; # converti } en ;
    			$sequence =~ s/ -- SEQUENCE --//g; # enleve - SEQ ...
    			$sequence =~ s/^\s+|\s+$//gm; # enlève les blanc en début de ligne
    			@data = split (';', $sequence);
     
    			$userlabel = $data[1];
    			$userlabeldata = $data[2];
    			$userlabel =~ s/\n//g;
    			$userlabeldata =~ s/\n//g;
    			$messagetext = $data[3];
    			$messagetextdata = $data[4];
    			$messagetext =~ s/\n//g;
    			$NEFunction = $data[5];
    			$NEFunctiondata = $data[6];
    			$NEFunction =~ s/\n//g;
    			$NEFunctiondata =~ s/\n//g;
    			$NEEditionClass = $data[7];
    			$NEEditionClassdata = $data[8];
    			$NEEditionClass =~ s/\n//g;
    			$NEEditionClassdata =~ s/\n//g;
    Apparemment cela fonctionne pour le moment.
    Je ne sais pas si c'est très "propre" mais bon.

  3. #3
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Pour être franc, je suis surpris que ça marche, à cause des deux premières regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			$sequence =~ s/{/;/g; # converti { en ;
    			$sequence =~ s/}/;/g; # converti } en ;
    Les caractères { et } ayant une signification particulière pour les regex, je suis étonné que perl laisse passer ça sans que tu les échappes.

    Bon, sinon, il est possible de réduire un peu ton code. Justement, ces deux premières regex peuvent avantageusement être remplacées par un appel à tr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sequence =~ tr/{}/;;/ ;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Merci,

    je vais essayer cela

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

Discussions similaires

  1. Texte formaté dans RichEdit & DBRichEdit
    Par dem dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/03/2021, 20h05
  2. Réponses: 12
    Dernier message: 18/06/2006, 19h42
  3. Réponses: 1
    Dernier message: 14/06/2006, 18h56
  4. comment mettre du texte formaté dans une frame?
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/10/2005, 14h55
  5. [HTML] affichage d'un text brut dans un tableau
    Par fren2809 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/10/2005, 13h57

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