PHP 7.1.12 Released

Metacaracteres

El poder de las expresiones regulares viene dado por la capacidad de incluir alternativas y repeticiones en el patrón. Éstos están codificadoes en el patrón por el uso de metacaracteres, los cuales no se representan a sí mismos, sino que son interpretados de una forma especial.

Hay dos conjuntos diferentes de metacaracteres: aquéllos que son reconocidos en cualquier lugar de un patrón excepto dentro de los corchetes, y aquéllos que son reconocidos dentro de los corchetes. Fuera de los corchetes, los metacaracteres son los siguientes:

Metacaracteres fuera de corchetes
MetacarácterDescripción
\carácter de escape general con varios usos
^declaración de inicio de sujeto (o línea, en modo multilínea)
$declaración de fin de sujeto o antes de la terminación de nueva línea (o fin línea, en modo multilínea)
.coincide con cualquier carácter excepto con el de nueva línea (por defecto)
[inicio de la definición de la clase carácter
]fin de la definición de la clase carácter
|inicio de rama alternativa
(inicio de sub-patrón
)fin de sub-patrón
?amplia el significado de (, también cuantificador 0 o 1, también hace perezosos a los cuantificadores codiciosos (véase repetición)
*cuantificador 0 o más
+cuantificador 1 o más
{inicio de cuantificador mín/máx
}fin de cuantificador mín/máx
La parte de un patrón que está entre corchetes se llama una clase carácter. En una clase carácter los únicos metacaracteres son:
Metacaracteres dentro de corchetes (clases carácter)
MetacarácterDescripción
\carácter de escape general
^niega la clase, pero sólo si se trata del primer carácter
-indica el rango de caracteres
Las siguientes secciones describen el uso de cada metacarácter.

add a note add a note

User Contributed Notes 2 notes

up
1
Kurt Wei
1 year ago
disturbing usage of "any character" for multi-lines...

remark:
'.' (all characters) just does NOT include on single character the newline (\n) by default,
while \n is included in all other matching searches (e.g. \s).
Funny enough, the "carriage return" (\r) is included, when using '.'

You have to write "(.|\\n)" instead of a single dot, with disadvantages in using complex matching-results,

or simple use the "s" modificator to bring dot to accept the newline.

$subject="<tag>Hello\nWorld</tag>";

preg_match( '/<tag>[A-Za-z\\s]*<\\/tag>/' , $subject ); //true
preg_match( '/<tag>[^<]*<\\/tag>/' , $subject ); //true
preg_match( '/<tag>(.|\\n)*<\\/tag>/' , $subject ); //true
preg_match( '/<tag>.*<\\/tag>/s' , $subject ); //true
preg_match( '/<tag>.*<\\/tag>/' , $subject ); //ATTENTION! *false*
up
-17
Thomas
2 years ago
The meta character $ accepts a (one) newline character (\n).

(Take a moment to let this information sink in)

You might want to (r)trim() your input afterwards if you have a match because otherwise it (still) might not meet a length requirement or other strange stuff might happen when you store the input as-is.
To Top