je voudrai sortir de ce tableau les lignes qui contiennent bateau @contient_bateau = grep /bateau/, @tableau
mais comment ne sortir que les lignes qui "commence" par bateau : @commence_par_bateau = grep /^bateau/, @tableau
Pour en savoir plus: perldoc -f grep
Pour en faire plus: perldoc -f map
Bonne chance,
-- Denis
Antoine Dinimant
sans même besoin de boucle :
my $texte = join("n", @tablo) ; my @tablo2 = ($texte =~ m/^bateau.*$/gm) ;
un peu d'explication :
/g : ne pas s'arrêter au premier résultat, mais faire une recherche Globale ramenant tous les résultats
/m : mode "multiligne", càd que ^ est un ancrage de début de ligne et $ un ancrage de fin de ligne. .* permet donc de capturer le reste de la ligne (sachant que le . ne reconnaît pas le "n", sauf si tu utilises le modificateur /s).
sans même besoin de boucle :
my $texte = join("n", @tablo) ;
my @tablo2 = ($texte =~ m/^bateau.*$/gm) ;
un peu d'explication :
/g : ne pas s'arrêter au premier résultat, mais faire une recherche
Globale ramenant tous les résultats
/m : mode "multiligne", càd que ^ est un ancrage de début de ligne et $
un ancrage de fin de ligne. .* permet donc de capturer le reste de la
ligne (sachant que le . ne reconnaît pas le "n", sauf si tu utilises le
modificateur /s).
my $texte = join("n", @tablo) ; my @tablo2 = ($texte =~ m/^bateau.*$/gm) ;
un peu d'explication :
/g : ne pas s'arrêter au premier résultat, mais faire une recherche Globale ramenant tous les résultats
/m : mode "multiligne", càd que ^ est un ancrage de début de ligne et $ un ancrage de fin de ligne. .* permet donc de capturer le reste de la ligne (sachant que le . ne reconnaît pas le "n", sauf si tu utilises le modificateur /s).
Antoine Dinimant
bon, en fait la solution de Paul est meilleure... ça m'apprendra à poster sans lire !
bon, en fait la solution de Paul est meilleure... ça m'apprendra à
poster sans lire !
fait le traitement demandé. Ce principe ne peut fonctionner que si on connait l'emplacement de la chaîne soit à partir du début de ligne soit à partir de la fin (index début négatif dans ce cas), mais s'avère en moyenne plus performant que l'utilisation d'expressions régulières (le temps de traitement est constant, alors que le temps de traitement avec une expression régulière dépend des données qu'on traite).
Denis
"Fabrice L." a écrit dans le message de news:capbha$pkk$
bonjour à tous !
un petit souci pas bien méchant avec les expressions régulières. Je planche
dessus depuis quelques heures et je ne vois pas...
voila le probleme.
un contenant :
oh mon bateau c'est un joli bateau bateau à voile bateau à moteur ne m'appelez plus jamais france tous les bateaux etc....
je voudrai sortir de ce tableau les lignes qui contiennent bateau
while (@tableau) { print $_ if ($_ =~ /bateau/); }
mais comment ne sortir que les lignes qui "commence" par bateau : -> bateau à voile -> bateau à moteur
Je dois chercher trop compliqué alors que cela doit être si simple...
Merci d'avance du coup de pouce !
Fabrice
Bonjour,
Bonjour,
Dans le cas présent, il n'est pas nécessaire d'utiliser les expressions
régulières :
fait le traitement demandé. Ce principe ne peut fonctionner que si on
connait l'emplacement de la chaîne soit à partir du début de ligne soit à
partir de la fin (index début négatif dans ce cas), mais s'avère en moyenne
plus performant que l'utilisation d'expressions régulières (le temps de
traitement est constant, alors que le temps de traitement avec une
expression régulière dépend des données qu'on traite).
Denis
"Fabrice L." <rafale@altern.org> a écrit dans le message de
news:capbha$pkk$1@news.tiscali.fr...
bonjour à tous !
un petit souci pas bien méchant avec les expressions régulières. Je
planche
dessus depuis quelques heures et je ne vois pas...
voila le probleme.
un t@bleau contenant :
oh mon bateau
c'est un joli bateau
bateau à voile
bateau à moteur
ne m'appelez plus jamais france
tous les bateaux
etc....
je voudrai sortir de ce tableau les lignes qui contiennent bateau
while (@tableau) { print $_ if ($_ =~ /bateau/); }
mais comment ne sortir que les lignes qui "commence" par bateau :
-> bateau à voile
-> bateau à moteur
Je dois chercher trop compliqué alors que cela doit être si simple...
fait le traitement demandé. Ce principe ne peut fonctionner que si on connait l'emplacement de la chaîne soit à partir du début de ligne soit à partir de la fin (index début négatif dans ce cas), mais s'avère en moyenne plus performant que l'utilisation d'expressions régulières (le temps de traitement est constant, alors que le temps de traitement avec une expression régulière dépend des données qu'on traite).
Denis
"Fabrice L." a écrit dans le message de news:capbha$pkk$
bonjour à tous !
un petit souci pas bien méchant avec les expressions régulières. Je planche
dessus depuis quelques heures et je ne vois pas...
voila le probleme.
un contenant :
oh mon bateau c'est un joli bateau bateau à voile bateau à moteur ne m'appelez plus jamais france tous les bateaux etc....
je voudrai sortir de ce tableau les lignes qui contiennent bateau
while (@tableau) { print $_ if ($_ =~ /bateau/); }
mais comment ne sortir que les lignes qui "commence" par bateau : -> bateau à voile -> bateau à moteur
Je dois chercher trop compliqué alors que cela doit être si simple...