Si votre email correspond à un compte, vous recevrez un lien de réinitialisation.
J'ai plusieurs regexp contenues dans des variables $re1, $re2, ...Quand je parse un fichier, je voudrais savoir si une ligne match une deces regexp, et si oui, laquelle.Pour le moment, je fais ça avec un gros :if (/$re1/)...elsif (/$re2/)......Mais y-a-t-il un moyen de faire qqc du genre :if (/$re1|$re2|.../et de savoir quelle regexp a matché ?
J'ai plusieurs regexp contenues dans des variables $re1, $re2, ... Quand je parse un fichier, je voudrais savoir si une ligne match une de ces regexp, et si oui, laquelle. Pour le moment, je fais ça avec un gros : if (/$re1/) ... elsif (/$re2/) ... ... Mais y-a-t-il un moyen de faire qqc du genre : if (/$re1|$re2|.../ et de savoir quelle regexp a matché ?
Dans l'article , com a dit...J'ai plusieurs regexp contenues dans des variables $re1, $re2, ...Quand je parse un fichier, je voudrais savoir si une ligne match une deces regexp, et si oui, laquelle.Pour le moment, je fais ça avec un gros :if (/$re1/)...elsif (/$re2/)......Mais y-a-t-il un moyen de faire qqc du genre :if (/$re1|$re2|.../et de savoir quelle regexp a matché ?Si vous mettez des parenthèses autour de chaque alternative, le numéro de laregexp qui correspond est dans $#- et le contenu dans $+. Exemple :#!/usr/bin/perl -wuse strict;my $s = 'xxxbbyyyzzz';if ($s =~ /(aa)|(bb)|(cc)/) {print "$#- = $#- et $+ = $+n";}__END__donne $#- = 2 et $+ = bbDans ce cas $1 et $3 sont undef et $2 contient 'bb'...d'où l'utilité de $+.Faites bien attention aux numéros si des parenthèses sont imbriquées.Voir perlvar :http://www.bribes.org/perl/docfr/perlvar.html#LC83656F4
Dans l'article <slrnc3tuqu.fer.pappy@batman.gotham-city.org>, pbret@hotmail. com a dit... J'ai plusieurs regexp contenues dans des variables $re1, $re2, ... Quand je parse un fichier, je voudrais savoir si une ligne match une de ces regexp, et si oui, laquelle. Pour le moment, je fais ça avec un gros : if (/$re1/) ... elsif (/$re2/) ... ... Mais y-a-t-il un moyen de faire qqc du genre : if (/$re1|$re2|.../ et de savoir quelle regexp a matché ? Si vous mettez des parenthèses autour de chaque alternative, le numéro de la regexp qui correspond est dans $#- et le contenu dans $+. Exemple : #!/usr/bin/perl -w use strict; my $s = 'xxxbbyyyzzz'; if ($s =~ /(aa)|(bb)|(cc)/) { print "$#- = $#- et $+ = $+n"; } __END__ donne $#- = 2 et $+ = bb Dans ce cas $1 et $3 sont undef et $2 contient 'bb'...d'où l'utilité de $+. Faites bien attention aux numéros si des parenthèses sont imbriquées. Voir perlvar : http://www.bribes.org/perl/docfr/perlvar.html#LC83656F4
Merci, c'est exactement ce dont j'avais besoin.Et pour ma curiosité maintenant, comment gérer le cas où plusieursexpressions correspondent (par exemple avec my $s = 'xxxbbyyyaazzzz').
Merci, c'est exactement ce dont j'avais besoin. Et pour ma curiosité maintenant, comment gérer le cas où plusieurs expressions correspondent (par exemple avec my $s = 'xxxbbyyyaazzzz').
Dans l'article , com a dit...[couic]Merci, c'est exactement ce dont j'avais besoin.Et pour ma curiosité maintenant, comment gérer le cas où plusieursexpressions correspondent (par exemple avec my $s = 'xxxbbyyyaazzzz').Fastoche ;-)#!/usr/bin/perl -wuse strict;my $s = 'xxxbbyyyaazzzz';while ($s =~ /(aa)|(bb)|(cc)/g) {print "$#- = $#- et $+ = $+n";}__END__
Dans l'article <slrnc3uh0h.fu1.pappy@batman.gotham-city.org>, pbert@hotmail. com a dit... [couic] Merci, c'est exactement ce dont j'avais besoin. Et pour ma curiosité maintenant, comment gérer le cas où plusieurs expressions correspondent (par exemple avec my $s = 'xxxbbyyyaazzzz'). Fastoche ;-) #!/usr/bin/perl -w use strict; my $s = 'xxxbbyyyaazzzz'; while ($s =~ /(aa)|(bb)|(cc)/g) { print "$#- = $#- et $+ = $+n"; } __END__