Fuera de una clase carácter, en el modo de comparación por defecto, el
carácter circunflejo (^
) es una declaración que
es verdadera sólo si el punto de coincidencia actual está en el inicio de
del string objetivo. Dentro de una clase carácter, circunflejo (^
)
tiene un significado totalmente diferente (véase más adelante).
Circunflejo (^
) no necesita ser el primer carácter
del patrón si están implicadas varias alternativas, pero
debería ser la primera cosa en cada alternativa en la que aparece
si el patrón es comparado siempre con esa rama. Si todas las posibles
alternativas comienzan con un circunflejo (^
), es decir,
si el patrón es obligado a coincidir sólo con el comienzo del string objetivo,
se dice que el patrón está "anclado". (También hay otras
contrucciones que pueden causar que un patrón esté anclado.)
Un carácter dólar ($
) es una declaración la cual es
true
sólo si el punto actual de coincidencia está al final del string
objetivo, o inmediatamente antes de un carácter de nueva línea que es el último
carácter en el string (por omisión). Dólar ($
)
no necesita ser el último carácter del patrón si están implicadas varias
alternativas, pero debería ser el último elemento en cualquier rama
en la que aparezca. Dólar no tiene un significado especial en una
clase carácter.
El significado de dólar se puede cambiar, de modo que sólo coincida con el final absoluto del string, estableciendo la opción PCRE_DOLLAR_ENDONLY en tiempo de compilación o comparación. Esto no afecta a la declaración \Z.
El significado de los caracteres circunflejo y dólar se cambia si la opción PCRE_MULTILINE es establecida. Cuando este es el caso, conciden inmediatemente después e inmediatamente antes que un carácter "\n" interno, respectivamente, además de coincidir al principio y final del string objetivo. Por ejemplo, el patrón /^abc$/ coincide con el string objetivo "def\nabc" en el modo multilínea, y no en otros. Consecuentemente, los patrones que están anclados en el modo de una sóla línea, a causa del inicio de todas las ramas con "^", no están anclados en el modo multilínea. La opción PCRE_DOLLAR_ENDONLY es ignorada si PCRE_MULTILINE está establecida.
Observe que las secuencias \A, \Z, y \z se pueden usar para coincidir el inicio y final del string objetivo en ambos modos, y si todas las ramas de un patrón comienzan con \A, el patrón siempre es anclado, sin tener en cuenta si PCRE_MULTILINE está establecido o no.