Expresiones regulares en PHP: una potente herramienta para trabajar con texto
Las expresiones regulares (regex) son secuencias de caracteres que definen un patrón para buscar y manipular cadenas. En PHP, se implementan a través de la biblioteca PCRE (Perl Compatible Regular Expressions) y brindan a los desarrolladores capacidades flexibles para la validación de datos, el análisis de texto y el reemplazo de subcadenas. En este artículo, analizaremos las funciones principales, la sintaxis y ejemplos prácticos del uso de expresiones regulares en PHP.
Funciones principales de PHP para trabajar con expresiones regulares
En PHP, existen varias funciones clave que permiten trabajar con expresiones regulares. Veamos las más importantes.
preg_match() — búsqueda de la primera coincidencia
La función preg_match() busca la primera coincidencia con un patrón en una cadena. Devuelve 1 si se encuentra una coincidencia, 0 si no, y FALSE en caso de error.
<?php$text = "Mi email: example@mail.com y test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "Email encontrado: " . $matches[0]; // Mostrará: Email encontrado: example@mail.com}?>preg_match_all() — búsqueda de todas las coincidencias
A diferencia de preg_match(), esta función encuentra todas las coincidencias en la cadena y las coloca en un array multidimensional.
<?php$text = "Mi email: example@mail.com y test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
preg_match_all($pattern, $text, $matches);print_r($matches[0]);// Mostrará: Array ( [0] => example@mail.com [1] => test@domain.org )?>preg_replace() — reemplazo según patrón
La función preg_replace() reemplaza todas las coincidencias con el patrón por la cadena especificada. Admite referencias inversas y modificadores.
<?php$text = "Hoy es 15.03.2024, y mañana será 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1";
echo preg_replace($pattern, $replacement, $text);// Mostrará: Hoy es 2024-03-15, y mañana será 2024-03-16?>preg_split() — división de cadena según patrón
La función preg_split() divide una cadena en un array según el patrón especificado. Es un análogo de explode(), pero con soporte para expresiones regulares.
<?php$text = "manzana, pera; plátano: naranja";$pattern = "/[,;: ]+/";
$fruits = preg_split($pattern, $text);print_r($fruits);// Mostrará: Array ( [0] => manzana [1] => pera [2] => plátano [3] => naranja )?>Sintaxis de las expresiones regulares
Las expresiones regulares en PHP se encierran entre delimitadores (generalmente barras /) y pueden contener modificadores después del delimitador de cierre. Veamos los elementos principales de la sintaxis.
Metacaracteres y cuantificadores
- Clases de caracteres:
.(cualquier carácter),\\d(dígito),\\w(letra, dígito, guion bajo),\\s(carácter de espacio en blanco) - Cuantificadores:
*(0 o más),+(1 o más),?(0 o 1),{n,m}(de n a m) - Anclas:
^(inicio de cadena),$(fin de cadena),\\b(límite de palabra) - Agrupación:
()(captura de grupo),(?:)(grupo no capturador) - Alternativa:
|(O lógico)
Modificadores de patrones
i— búsqueda sin distinción de mayúsculas/minúsculasm— modo multilínea (^ y $ funcionan para cada línea)s— el metacarácter . incluye saltos de líneau— soporte para Unicode (obligatorio para trabajar con