Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Expression régulière - ligne à prendre en compte

2 réponses
Avatar
titof92
Bonjour,
Je me retrouve bloqu=E9 face =E0 un petit souci, dans le cadre d''une
lecture de fichier en s=E9quentiel.
En fait, je souhaiterais utiliser une expression r=E9guli=E8re qui me
permette de prendre en compte uniquement les lignes non vides, ne
commen=E7ant ni par HDR, ni par TRL, mais je ne vois pas trop comment
parvenir =E0 mes fins...
Quelqu'un peut-il m'aider ?
Merci par avance,
Christophe

2 réponses

Avatar
Paul Gaborit
À (at) Mon, 12 Dec 2011 06:09:51 -0800 (PST),
titof92 écrivait (wrote):

Je me retrouve bloqué face à un petit souci, dans le cadre d''une
lecture de fichier en séquentiel.
En fait, je souhaiterais utiliser une expression régulière qui me
permette de prendre en compte uniquement les lignes non vides, ne
commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment
parvenir à mes fins...
Quelqu'un peut-il m'aider ?
Merci par avance,



En supposant que le filehandle du fichier ouvert en lecture est
$fichier :

while (<$fichier>) {
next if m/^$/; # on saute les lignes vides
next if m/^HDR/; # on saute les lignes commençant par HDR
next if m/^TRL/; # on saute les lignes commençant par TRL

# ici on traite la ligne courante (elle est dans $_)
}

On peut tout faire en une seule regexp (mais c'est moins lisible) :

while (<$fichier>) {
# on saute les lignes vides ou commençant par HDR ou TRL
next if m/^(?:$|HDR|TRL)/;

# ici on traite la ligne courante (elle est dans $_)
}


--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
azrazer
Bonjour,
une expression régulière basique fonctionnerait, non ?
du genre
foreach my $line (<$FICHIER>){
if ($line !~ /^$|^HDR|^TRL){
...
}
}

????
Est-ce que cela est suffisant ??

Cordialement,

azra..

# exemple ....
use strict;
use warnings;
foreach my $line (<DATA>){
if ($line !~ /^$|^HDR|^TRL/){
print $line;
}
}
__DATA__
Ligne1

Ligne3
TRL Ligne4
Ligne5
HDR Ligne6
Ligne7

#EOF#
Le 12/12/2011 15:09, titof92 a écrit :
Bonjour,
Je me retrouve bloqué face à un petit souci, dans le cadre d''une
lecture de fichier en séquentiel.
En fait, je souhaiterais utiliser une expression régulière qui me
permette de prendre en compte uniquement les lignes non vides, ne
commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment
parvenir à mes fins...
Quelqu'un peut-il m'aider ?
Merci par avance,
Christophe