| Crochets
Un crochet ouvrant
[
introduit une classe de
caractères, et le crochet fermant
]
la
conclut. Le crochet fermant n'a pas de signification en lui-même.
Si le crochet fermant est nécessaire à l'intérieur
d'une classe de caractères, il faut qu'il soit le premier
caractère (après un
^
éventuel)
ou échappé avec un antislash.
Une classe de caractères remplace un seul caractère
dans la chaîne sujet, à moins que le premier
caractère de la classe soit un accent circonflexe
^
, qui représente une négation :
le caractère ne doit pas se trouver dans la classe. Si
^
est nécessaire dans la classe, il
suffit qu'il ne soit pas le premier caractère, ou bien
qu'il soit échappé avec un antislash.
Par exemple, le caractère
[aeiou]
remplace
n'importe quelle voyelle minuscule, tandis que
[^aeiou]
remplace n'importe quelle caractère qui n'est pas une voyelle
minuscule.
^
est une notation pratique pour
spécifier des caractères qui sont dans une classe,
en ne citant que ceux qui n'y sont pas. Le comportement est inchangé.
Avec l'option d'insensibilité à la casse, toutes les lettres
d'une classe de caractères représentent en même temps
la majuscule et la minuscule. Par exemple,
[aeiou]
représentera "
A
" ou "
a
", et
[^aeiou]
n'acceptera pas ni "
A
",
tandis que sans l'option, elle l'accepterait.
Le caractère de nouvelle ligne n'est pas traité de
manière spéciale dans les classes de caractères,
quelque soit l'option PCRE_DOTALL
ou PCRE_MULTILINE . Une classe
telle que
[^a]
acceptera toujours une nouvelle ligne.
Le signe moins (
-
) est utilisé pour
spécifier un intervalle de caractères, dans
une classe. Par exemple,
[d-m]
remplace toutes
les lettres entre d et m inclus. Si le caractère moins est
requis dans une classe, il faut l'échapper avec un antislash,
ou le faire apparaître à une position ou il ne pourra
pas être interprété comme une indication d'intervalle,
c'est-à-dire au début ou à la fin de la classe.
Il n'est pas possible d'avoir le caractère crochet fermant
"
]
" comme fin d'intervalle. Un masque tel que
[W-]46]
est compris comme la classe de caractères
contenant deux caractères ("W" et "-") suivi de la chaîne
littérale "46]", ce qui fait qu'il va accepter
"
W46]
" ou "
-46]
". Cependant, si
"
]
" est échappé avec un antislash, le
masque
[W-\]46]
est interprété comme
une classe d'un seul caractère, contenant un intervalle de
caractères.
La valeur octale ou hexadécimale de "
]
" peut
aussi être utilisée pour déterminer les limites
de l'intervalle. Les intervalles travaillent sur des
séquences ASCII. Ils peuvent aussi être
précisées avec des valeurs numériques, par exemple
"
[\000-\037]
".
Si cet intervalle inclut des lettres utilisées avec une
option d'insensibilité de casse, les majuscules ou minuscules
correspondantes seront aussi incluses. Par exemple,
"
[C-c]
" est équivalent é
"
[][\^_`wxyzabc]
", avec l'option
d'insensibilité de casse. Si la table locale de
caractères est "fr", "
[\xc8-\xcb]
"
correspond aux caractères accentués.
Les types de caractères
\d
,
\D
,
\S
,
\s
,
\w
,
\W
peuvent aussi intervenir
dans les classes de caractères. Par exemple,
"
[][\^_`wxyzabc][\dABCDEF]
" acceptera n'importe
quel caractère hexadécimal. Un accent circonflexe peut
aussi être utilisé pour spécifier adroitement
des ensembles de caractères plus restrictifs : par exemple
[^\W_]
accepte toutes les lettres et les chiffres,
mais pas les soulignés. Tous les caractères non alpha-
numériques autres que
\, -, ^
(placés
en début de chaîne) et
]
n'ont pas de
signification particulière, mais ils ne perdront rien à
être échappés.
|