Barre verticale
<<<
Options internes Sous-masques
>>>

6.33.9.1 Détails sur les expressions rationnelles
6.33.9 syntaxe des masques
6.33 Expressions rationnelles compatibles Perl
6 Référence des fonctions
 Manuel PHP

Introduction
Méta-caractères
Anti-slash
Propriétés des caractères Unicode
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 , PCRE_UNGREEDY , PCRE_EXTRA et PCRE_EXTENDED peuvent être changées à l'intérieur du masque lui-même, avec des séquences mises entre " (? " et " ) ". Les options sont :
i pour PCRE_CASELESS
m pour PCRE_MULTILINE
s pour PCRE_DOTALL
x pour PCRE_EXTENDED
U pour PCRE_UNGREEDY
X Pour PCRE_EXTRA

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.

Lorsqu'une modification d'option survient au degrès le plus haut (et donc, pas dans les parenthèses du sous-masque), les modifications sont appliquées dans le reste du masque qui suit. Donc, /ab(?i)c/ valide uniquement "abc" et "abC". Ce comportement a été modifié en PCRE 4.0 et est inclus depuis PHP 4.3.3. Dans les versions précédentes, /ab(?i)c/ fonctionne de la même façon que /abc/i (e.g. valide "ABC" et "aBc").

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érentes configurations 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 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.

<< Options internes >>
Barre verticale Détails sur les expressions rationnelles Sous-masques