OVH Cloud OVH Cloud

Probleme avec une regexp

1 réponse
Avatar
Nicolas Lavacry
Je n'arrive pas a trouver la regexp qui me permettra de dire si une chaine
n'est pas dans une autre. Je m'explique avec un exemple :
"Ma chaine"
je veux une expression reguliere qui fasse l'equivalent de !~/chaine/
en fait je veux que cette regexp match avec toutes les chaines ne contenant
pas le mot "chaine".

Merci d'avance. ToMMY

1 réponse

Avatar
Paul GABORIT
À (at) Wed, 24 Sep 2003 18:08:45 +0200,
Nicolas Lavacry écrivait (wrote):
Je n'arrive pas a trouver la regexp qui me permettra de dire si une chaine
n'est pas dans une autre. Je m'explique avec un exemple :
"Ma chaine"
je veux une expression reguliere qui fasse l'equivalent de !~/chaine/
en fait je veux que cette regexp match avec toutes les chaines ne contenant
pas le mot "chaine".


On peut le faire via une expression régulière de longueur nulle ancrée au
début de la chaîne :

my $s = "chaine";
my $no_s = qr/A(?!(?ms:.*)Q$sE)/;

foreach my $l ("Ma chaine", "Sans e : chain.") {
print "$ln" if $l =~ m/$no_s/;
}


--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
Remove '.OOO' from e-mail address - Supprimez '.OOO' de l'adresse e-mail