Anclas

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.

add a note add a note

User Contributed Notes 1 note

up
1
srf
7 years ago
Outside square brackets : assert start of subject (or line, in multiline mode)

Inside square brackets : negate the class, but only if the first character

[^0]  which means - all but 0
[^A]  which means - all but A & so on
To Top