En dehors d'une classe de caractères, avec les options par
défaut, ^
est une assertion qui n'est
vraie que si elle est placée tout au début de la
chaîne. À l'intérieur d'une classe de caractères,
^
a un tout autre sens (voir ci-dessous).
^
n'a pas besoin d'être le premier
caractère du masque, si plusieurs alternatives sont
proposées, mais il doit être placé en
premier dans chaque alternative. Si toutes les alternatives
commencent par ^
, alors le masque est dit ancré
(il y a une autre construction qui porte cette appellation).
$
est une assertion qui n'est vraie que si elle
est placée tout en fin de chaîne ou juste avant un
caractère de nouvelle ligne qui serait le dernier
caractère de la chaîne. À l'intérieur d'une
classe de caractères, $
a un tout autre
sens (voir ci-dessous).
$
n'a pas besoin d'être le dernier
caractère du masque, si plusieurs alternatives sont
proposées, mais il doit être placé en dernier
dans chaque alternative. Si toutes les alternatives finissent par
$
, alors le masque est dit ancré (il y
a une autre construction qui porte cette appellation). $
n'a pas de valeur particulière dans une classe de
caractères.
La signification de $
peut changer, de manière
à l'amener à ce qu'il ne puisse se trouver qu'en toute
fin de la chaîne sujet. Cela se fait en ajoutant l'option
PCRE_DOLLAR_ENDONLY
au moment de la compilation, ou de l'exécution.
Cette option est inopérante sur \Z
.
La signification de ^
peut changer, de manière
à l'amener à ce qu'il puisse se trouver immédiatement
avant et immédiatement après un caractère de nouvelle
ligne "\n
". Cela se fait en ajoutant l'option
PCRE_MULTILINE au moment de
la compilation ou de l'exécution.
Par exemple, le masque /^abc$/
accepte la chaîne
"def\nabc
" uniquement en mode multilignes. Par
conséquent, toutes les parties du masque qui commencent par
"^
" ne sont pas ancrées, en mode multilignes.
L'option PCRE_DOLLAR_ENDONLY
est ignorée si l'option
PCRE_MULTILINE est choisie.
Notez que les métacaractères \A
,
\Z
, et \z
peuvent servir à
repérer le début et la fin du sujet, et toutes les
parties du masque qui commenceront par \A
seront toujours
ancrées, avec l'option
PCRE_MULTILINE ou non.