Inversion des ensembles de caractères dans les regex
Avec le caret ^ au début des crochets,
on peut inverser le souhaité. Autrement dit,
si, par exemple, la commande [ab] cherche
la lettre 'a' ou 'b', alors la commande
[^ab] cherchera tous les caractères, sauf
'a' et 'b'.
Exemple
Dans cet exemple, le modèle de recherche ressemble à ceci :
lettre 'x', puis NON lettre 'a',
non 'b' et non 'c', ensuite lettre
'z' :
<?php
$str = 'xaz xbz xcz xez';
$res = preg_replace('#x[^abc]z#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'xaz xbz xcz !'
Exemple
Dans cet exemple, le modèle de recherche ressemble à ceci :
lettre 'x', puis NON lettre latine minuscule,
ensuite lettre 'z' :
<?php
$str = 'xaz xbz x1z xCz';
$res = preg_replace('#x[^a-z]z#', '!', $str);
?>
En conséquence, la variable contiendra ce qui suit :
'xaz xbz ! !'
Tâches pratiques
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : chiffre '1', puis caractère
non 'e' et non 'x', chiffre '2'.
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : lettre 'x', puis NON
chiffre de 2 à 7, lettre 'z'.
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : lettre 'x', puis NON
lettre latine majuscule de 1 fois ou plus,
lettre 'z'.
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : lettre 'x', puis ni
lettre latine majuscule ni lettre latine minuscule et ni chiffre
de 1 à 5 de 1 fois ou plus,
lettre 'z'.