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
de la cadena 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 de la cadena 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 de la cadena
objetivo, o inmediatamente antes de un carácter de nueva línea que es el último
carácter en la cadena (por defecto). 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 de la cadena, 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 de la cadena objetivo. Por ejemplo, el patrón /^abc$/ coincide con la cadena 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 de la cadena 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.