Expresiones regulares de PHP
¿Qué es una expresión regular?
Una expresión regular es una secuencia de caracteres que forma un patrón de búsqueda. Cuando busca datos en un texto, puede usar este patrón de búsqueda para describir lo que está buscando.
Una expresión regular puede ser un solo carácter o un patrón más complicado.
Las expresiones regulares se pueden utilizar para realizar todo tipo de operaciones de búsqueda y reemplazo de texto.
Sintaxis
En PHP, las expresiones regulares son cadenas compuestas por delimitadores, un patrón y modificadores opcionales.
$exp = "/w3schools/i";
En el ejemplo anterior, /
es el delimitador , w3schools es el patrón que se busca y i
es un modificador que hace que la búsqueda no distinga entre mayúsculas y minúsculas.
El delimitador puede ser cualquier carácter que no sea una letra, un número, una barra invertida o un espacio. El delimitador más común es la barra inclinada (/), pero cuando su patrón contiene barras inclinadas, es conveniente elegir otros delimitadores como # o ~.
Funciones de expresiones regulares
PHP proporciona una variedad de funciones que le permiten usar expresiones regulares. Las
funciones preg_match()
, preg_match_all()
y preg_replace()
son algunas de las más utilizadas:
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
Usando preg_match()
La preg_match()
función le dirá si una cadena contiene coincidencias de un patrón.
Ejemplo
Utilice una expresión regular para realizar una búsqueda sin distinción entre mayúsculas y minúsculas de "w3schools" en una cadena:
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Usando preg_match_all()
La preg_match_all()
función le dirá cuántas coincidencias se encontraron para un patrón en una cadena.
Ejemplo
Use una expresión regular para hacer un conteo que no distinga entre mayúsculas y minúsculas del número de ocurrencias de "ain" en una cadena:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
Usando preg_replace()
La preg_replace()
función reemplazará todas las coincidencias del patrón en una cadena con otra cadena.
Ejemplo
Use una expresión regular que no distinga entre mayúsculas y minúsculas para reemplazar Microsoft con W3Schools en una cadena:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo
preg_replace($pattern, "W3Schools", $str); // Outputs "Visit
W3Schools!"
?>
Modificadores de expresiones regulares
Los modificadores pueden cambiar la forma en que se realiza una búsqueda.
Modifier | Description |
---|---|
i | Performs a case-insensitive search |
m | Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line) |
u | Enables correct matching of UTF-8 encoded patterns |
Patrones de expresiones regulares
Los corchetes se utilizan para encontrar un rango de caracteres:
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find any character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
Metacaracteres
Los metacaracteres son caracteres con un significado especial:
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
cuantificadores
Los cuantificadores definen cantidades:
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
Nota: Si su expresión necesita buscar uno de los caracteres especiales, puede usar una barra invertida ( \ ) para escapar de ellos. Por ejemplo, para buscar uno o más signos de interrogación puede usar la siguiente expresión: $patrón = '/\?+/';
Agrupamiento
Puede usar paréntesis ( )
para aplicar cuantificadores a patrones completos. También se pueden usar para seleccionar partes del patrón que se usarán como coincidencia.
Ejemplo
Use la agrupación para buscar la palabra "banana" buscando ba seguido de dos instancias de na :
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Referencia RegExp completa
Para obtener una referencia completa, vaya a nuestra Referencia completa de expresiones regulares de PHP .
La referencia contiene descripciones y ejemplos de todas las funciones de expresiones regulares.