je dois lire plusieurs fichiers ligne par ligne à la recherche de
blocs de texte.
Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement
séparés par un ou plusieurs espaces). un peu comme une réponse à
un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla
! ligne du bloc de niveau 1 ! mm !!!!!!
! encore une ligne du bloc 1
! ! ligne du bloc 2
ligne normale
!! une ligne d'un bloc de niveau 2
!! une ligne d'un bloc de niveau 2
! ! ! ligne du bloc de niveau 3
ligne normale
....
# fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne des
blocs recherchés
m/((?:\s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son niveau
(c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide.
Pierre.
-----
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Rue des Prairies
Bonjour,
je dois lire plusieurs fichiers ligne par ligne à la recherche de blocs de texte. Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement séparés par un ou plusieurs espaces). un peu comme une réponse à un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla ! ligne du bloc de niveau 1 ! mm !!!!!! ! encore une ligne du bloc 1 ! ! ligne du bloc 2 ligne normale !! une ligne d'un bloc de niveau 2 !! une ligne d'un bloc de niveau 2 ! ! ! ligne du bloc de niveau 3 ligne normale .... # fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne des blocs recherchés
m/((?:s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son niveau (c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide. Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
Bonjour,
Je ne comprend pas bien ce que tu veux, mais si c'est avoir le nombre de ! pour chaque ligne, ceci fait peut-être l'affaire :
je dois lire plusieurs fichiers ligne par ligne à la recherche de
blocs de texte.
Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement
séparés par un ou plusieurs espaces). un peu comme une réponse à
un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla
! ligne du bloc de niveau 1 ! mm !!!!!!
! encore une ligne du bloc 1
! ! ligne du bloc 2
ligne normale
!! une ligne d'un bloc de niveau 2
!! une ligne d'un bloc de niveau 2
! ! ! ligne du bloc de niveau 3
ligne normale
....
# fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne des
blocs recherchés
m/((?:s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son niveau
(c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide.
Pierre.
-----
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/
Bonjour,
Je ne comprend pas bien ce que tu veux, mais si c'est avoir le nombre de
! pour chaque ligne, ceci fait peut-être l'affaire :
je dois lire plusieurs fichiers ligne par ligne à la recherche de blocs de texte. Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement séparés par un ou plusieurs espaces). un peu comme une réponse à un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla ! ligne du bloc de niveau 1 ! mm !!!!!! ! encore une ligne du bloc 1 ! ! ligne du bloc 2 ligne normale !! une ligne d'un bloc de niveau 2 !! une ligne d'un bloc de niveau 2 ! ! ! ligne du bloc de niveau 3 ligne normale .... # fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne des blocs recherchés
m/((?:s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son niveau (c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide. Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
Bonjour,
Je ne comprend pas bien ce que tu veux, mais si c'est avoir le nombre de ! pour chaque ligne, ceci fait peut-être l'affaire :
Tout depends de ce qu'on veut faire avec les lignes identifiée comme faisant partie d'un bloc .
Voici ma solution , en deux etapes : on matche les ! et ensuite on les compte :
my $count =1 ; my @niveau ; my $ligne ;
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ; print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
__DATA__ ligne normale bla bla bla ! ligne du bloc de niveau 1 ! mm !!!!!! ! encore une ligne du bloc 1 ! ! ligne du bloc 2
ligne normale !! une ligne d'un bloc de niveau 2
!! une ligne d'un bloc de niveau 2 ! ! ! ligne du bloc de niveau 3 ligne normale
Le resultat est :
La ligne 1 est normale La ligne 2 est de niveau 1 La ligne 3 est de niveau 1 La ligne 4 est de niveau 2 La ligne 5 est normale La ligne 6 est de niveau 2 La ligne 7 est de niveau 2 La ligne 8 est de niveau 3 La ligne 9 est normale
Dav'
Bonjour,
je dois lire plusieurs fichiers ligne par ligne à la recherche de blocs de texte. Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement séparés par un ou plusieurs espaces). un peu comme une réponse à un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla ! ligne du bloc de niveau 1 ! mm !!!!!! ! encore une ligne du bloc 1 ! ! ligne du bloc 2 ligne normale !! une ligne d'un bloc de niveau 2 !! une ligne d'un bloc de niveau 2 ! ! ! ligne du bloc de niveau 3 ligne normale .... # fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne d es blocs recherchés
m/((?:s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son nive au (c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide. Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
Bonjour,
Tout depends de ce qu'on veut faire avec les lignes identifiée comme
faisant partie d'un bloc .
Voici ma solution , en deux etapes : on matche les ! et ensuite on les
compte :
my $count =1 ;
my @niveau ;
my $ligne ;
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ;
print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
__DATA__
ligne normale bla bla bla
! ligne du bloc de niveau 1 ! mm !!!!!!
! encore une ligne du bloc 1
! ! ligne du bloc 2
ligne normale
!! une ligne d'un bloc de niveau 2
!! une ligne d'un bloc de niveau 2
! ! ! ligne du bloc de niveau 3
ligne normale
Le resultat est :
La ligne 1 est normale
La ligne 2 est de niveau 1
La ligne 3 est de niveau 1
La ligne 4 est de niveau 2
La ligne 5 est normale
La ligne 6 est de niveau 2
La ligne 7 est de niveau 2
La ligne 8 est de niveau 3
La ligne 9 est normale
Dav'
Bonjour,
je dois lire plusieurs fichiers ligne par ligne à la recherche de
blocs de texte.
Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement
séparés par un ou plusieurs espaces). un peu comme une réponse à
un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla
! ligne du bloc de niveau 1 ! mm !!!!!!
! encore une ligne du bloc 1
! ! ligne du bloc 2
ligne normale
!! une ligne d'un bloc de niveau 2
!! une ligne d'un bloc de niveau 2
! ! ! ligne du bloc de niveau 3
ligne normale
....
# fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne d es
blocs recherchés
m/((?:s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son nive au
(c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide.
Pierre.
-----
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/
Tout depends de ce qu'on veut faire avec les lignes identifiée comme faisant partie d'un bloc .
Voici ma solution , en deux etapes : on matche les ! et ensuite on les compte :
my $count =1 ; my @niveau ; my $ligne ;
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ; print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
__DATA__ ligne normale bla bla bla ! ligne du bloc de niveau 1 ! mm !!!!!! ! encore une ligne du bloc 1 ! ! ligne du bloc 2
ligne normale !! une ligne d'un bloc de niveau 2
!! une ligne d'un bloc de niveau 2 ! ! ! ligne du bloc de niveau 3 ligne normale
Le resultat est :
La ligne 1 est normale La ligne 2 est de niveau 1 La ligne 3 est de niveau 1 La ligne 4 est de niveau 2 La ligne 5 est normale La ligne 6 est de niveau 2 La ligne 7 est de niveau 2 La ligne 8 est de niveau 3 La ligne 9 est normale
Dav'
Bonjour,
je dois lire plusieurs fichiers ligne par ligne à la recherche de blocs de texte. Ces blocs doivent commencer par un ou plusieurs '!' (eventuellement séparés par un ou plusieurs espaces). un peu comme une réponse à un mail ou un post sur les newsgroups
# exemple du fichier texte
ligne normale bla bla bla ! ligne du bloc de niveau 1 ! mm !!!!!! ! encore une ligne du bloc 1 ! ! ligne du bloc 2 ligne normale !! une ligne d'un bloc de niveau 2 !! une ligne d'un bloc de niveau 2 ! ! ! ligne du bloc de niveau 3 ligne normale .... # fin exemple
J'ai trouvé une expression régulière pour identifier chaque ligne d es blocs recherchés
m/((?:s*!)*)/; # regexp avec smiley
mais je veux plutôt idetifier chaque bloc ( début - fin ) et son nive au (c.à.d le nbre de '!' au début)
je pense qu'il faut adapter cette regexp mais n'y arrive pas
merci de votre aide. Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
p_geni...
Dav' wrote:
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ; print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
merci de cette réponse. Je vais l'adapter afin de détecter le début et la fin de chaque bloc (c.à.d) changement de scalar(@niveau) et je vais tester les performances car je vais faire cela sur des centaines de fichiers dont certains sont de taille imposante.
Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
Dav' wrote:
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ;
print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
merci de cette réponse. Je vais l'adapter afin de détecter le début et la
fin de chaque bloc (c.à.d) changement de scalar(@niveau) et je vais tester
les performances car je vais faire cela sur des centaines de fichiers dont
certains sont de taille imposante.
Pierre.
-----
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/
@niveau = ( $1 =~ /!/g ) ; print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
merci de cette réponse. Je vais l'adapter afin de détecter le début et la fin de chaque bloc (c.à.d) changement de scalar(@niveau) et je vais tester les performances car je vais faire cela sur des centaines de fichiers dont certains sont de taille imposante.
Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
Dav'
Si les fichiers ne sont pas monstrueux ça vaut peut être le coup de tester aussi les perf en faisant un slurp sur le fichier plutot que de le lire ligne à ligne :
my @lignes = (<DATA>) ; foreach my $ligne (@ligne) ...
Dav' wrote:
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ; print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
merci de cette réponse. Je vais l'adapter afin de détecter le début et la fin de chaque bloc (c.à.d) changement de scalar(@niveau) et je vais tes ter les performances car je vais faire cela sur des centaines de fichiers dont certains sont de taille imposante.
Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/
Si les fichiers ne sont pas monstrueux ça vaut peut être le coup de
tester aussi les perf en faisant un slurp sur le fichier plutot que de
le lire ligne à ligne :
my @lignes = (<DATA>) ;
foreach my $ligne (@ligne) ...
Dav' wrote:
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ;
print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
merci de cette réponse. Je vais l'adapter afin de détecter le début et la
fin de chaque bloc (c.à.d) changement de scalar(@niveau) et je vais tes ter
les performances car je vais faire cela sur des centaines de fichiers dont
certains sont de taille imposante.
Pierre.
-----
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/
Si les fichiers ne sont pas monstrueux ça vaut peut être le coup de tester aussi les perf en faisant un slurp sur le fichier plutot que de le lire ligne à ligne :
my @lignes = (<DATA>) ; foreach my $ligne (@ligne) ...
Dav' wrote:
while ( $ligne = <DATA>) {
if ( $ligne =~ m/^((?:s*!)+)/ ) {
@niveau = ( $1 =~ /!/g ) ; print "La ligne $count est de niveau " , scalar @niveau, "n" ;
} else {
print "La ligne $count est normalen"
}
$count++
}
merci de cette réponse. Je vais l'adapter afin de détecter le début et la fin de chaque bloc (c.à.d) changement de scalar(@niveau) et je vais tes ter les performances car je vais faire cela sur des centaines de fichiers dont certains sont de taille imposante.
Pierre. ----- échangez opinions et commentaires dans les forums de discussion. http://www.usenetgratuit.com/