7.89.9.1 Détails sur les expressions régulières
7.89.9 syntaxe des masques
7.89 Expressions régulières compatibles Perl
7 Index des fonctions
Manuel PHP
. Introduction . Méta-caractères . Antislash . Accent circonflexe et Dollar . Point . Crochets . Barre verticale ->Options internes . Sous-masques . Répétitions . Références arrières . Assertions . Sous-masques uniques . Les sous-masques conditionnels . Commentaires . Masques récursifs . Performances
|
Options internes
Les options PCRE_CASELESS ,
PCRE_MULTILINE ,
PCRE_DOTALL et
PCRE_EXTENDED peuvent
être changée à l'intérieur du masque
lui-même, avec des séquences mises entre
"
(?
" et "
)
".
Les options sont :
-
i
-
PCRE_CASELESS
-
m
-
PCRE_MULTILINE
-
s
-
PCRE_DOTALL
-
x
-
PCRE_EXTENDED
Par exemple,
(?im)
rend le masque insensible à
la casse, et multi-lignes. Il est possible d'annuler ces options en les
faisant précéder par un signe
-
: par
exemple
(?im-sx)
, ajoutera les options
PCRE_CASELESS
et PCRE_MULTILINE mais
annulera les options PCRE_DOTALL
et PCRE_EXTENDED .
Si une option apparaît avant et après le signe moins, l'option
sera annulée.
Le domaine d'application de ces options dépend de la position de
la séquence d'option. Pour toutes les séquences d'options
qui sont hors des sous-masques (définis plus loin), l'effet est le
même que si l'option avait été fixée dès
le début de la recherche. Les exemples suivants se comportent tous
de la même façons :
(?i)abc
,
a(?i)bc
,
ab(?i)c
,
abc(?i)
, et sont parfaitement équivalents au
masque
abc
avec l'option
PCRE_CASELESS . En d'autres
termes, activer des séquences d'options dans le corps principal
du masque revient à appliquer l'option à tout le masque, sauf
ordre contraire dans les sous-masques. S'il y a plusieurs séquences
d'options qui portent sur la même option, la dernière s'appliquera.
Si une option intervient dans un sous-masque, le comportement est différent.
C'est un changement de comportement apparu en Perl 5.005. Une option à
l'intérieur d'un sous-masque n'affecte que cette partie du masque, ce
qui fait que
(a(?i)b)c
acceptera
abc
et
aBc
mais aucune autre chaîne (en supposant que
PCRE_CASELESS n'est pas
utilisé). Cela signifie que les options permettent d'avoir
différente configuration de recherche pour différentes
parties du masque.
Une séquence d'options dans une alternative affecte toute
l'alternative. Par exemple :
(a(?i)b|c)
accepte
"
ab
", "
aB
", "
c
",
et "
C
", même si, comme dans le cas de
"
C
", la première alternative qui porte
l'option n'est pas prise en compte. Sinon, cela risque d'introduire
des comportements très étranges : les options
spécifiques à PCRE telles que
PCRE_UNGREEDY et
PCRE_EXTRA peuvent
être modifiées de la même
manière, en utilisant respectivement les caractères
U et X. L'option
(?X)
est particulière,
car elle doit toujours intervenir avant toutes les autres options,
même au niveau du masque entier. Il vaut mieux l'activer au
début du masque.
|