Expresiones regulares para principiantes: una introducción práctica
Las expresiones regulares - "regex" - parecen como si alguien se hubiera quedado dormido en el teclado: ^\d{3}-\d{4}$. Pero detrás de los símbolos crípticos se encuentra una de las herramientas más poderosas de la programación: un lenguaje diminuto para describir y relacionar patrones en el texto. Aprenda los conceptos básicos y ahorrará horas en tareas como validación, búsqueda y búsqueda y reemplazo.
Para qué sirve la expresión regular
Una expresión regular describe un patrón y un motor de expresiones regulares encuentra (o valida o reemplaza) el texto que coincide. "Buscar todas las direcciones de correo electrónico", "comprobar que este sea un número de teléfono válido", "reemplazar cada espacio doble por uno": todos son trabajos de expresiones regulares. Es compatible con prácticamente todos los lenguajes de programación y la mayoría de los editores de texto.
Los componentes básicos
.: coincide con cualquier carácter.\d— cualquier dígito;\w— cualquier carácter de palabra;\s: cualquier espacio en blanco.*— cero o más;+— uno o más;? — opcional.{3}— exactamente tres;{2,5}— entre dos y cinco.^y$: inicio y final de la cadena.[abc]— cualquiera de a, b o c;[a-z]: cualquier letra minúscula.
Leyendo un ejemplo real
Tome
Prueba antes de confiar
La regla de oro de las expresiones regulares: nunca utilices un patrón que no hayas probado con ejemplos reales; es fácil equivocarse sutilmente (coincidir demasiado o muy poco). Cree y pruebe patrones con resaltado en vivo en nuestro probador de expresiones regulares, probando cadenas que deberían coincidir y cadenas que no.
Dónde profundizar
Una vez que los conceptos básicos hacen clic, conceptos como grupos, alternancia y anticipación amplían lo que puede hacer. La guía de expresiones regulares de MDN es una excelente referencia rica en ejemplos para los siguientes pasos.
Capturar grupos: extraer, no solo unir
Los paréntesis en una expresión regular cumplen una doble función: agrupan partes de un patrón y "capturan" lo que coinciden para que usted pueda extraerlo. Un patrón como (\d{4})-(\d{2})-(\d{2}) contra una fecha no solo confirma el formato; le entrega el año, mes y día por separado. Los grupos de captura convierten las expresiones regulares de un validador de sí/no en una herramienta para extraer datos estructurados de texto desordenado, uno de sus usos cotidianos más poderosos.
La trampa de las coincidencias codiciosas
De forma predeterminada, los cuantificadores como * y + son "codiciosos": captan tanto como sea posible. Entonces, <.+> contra coincide con la cadena completa, no solo con la primera etiqueta, porque toma todo hasta el último >. Agregar ? hace que un cuantificador sea "vago" (<.+?>), y coincida lo menos posible. Esta distinción entre codicioso y perezoso está detrás de una gran cantidad de comentarios que hacen pensar que "mi expresión regular coincide demasiado".
Sepa cuándo NO usar expresiones regulares
Regex es poderosa pero no siempre es la herramienta adecuada. Analizar HTML o JSON con expresiones regulares es muy frágil; en su lugar, utilice un analizador real. Y una expresión regular demasiado inteligente puede ser ilegible y lenta (algunos patrones incluso provocan un retroceso catastrófico que bloquea la aplicación). La regla general: las expresiones regulares brillan para patrones bien definidos en texto plano; para formatos estructurados, busque un analizador dedicado. Siempre pruebe su patrón con datos reales antes de confiar en él.
Conclusión
Regex es un lenguaje compacto para hacer coincidir patrones de texto: invaluable para la validación, búsqueda y reemplazo una vez que conoce los componentes básicos. Aprenda los símbolos comunes, lea patrones de izquierda a derecha y pruebe siempre con datos reales. La pequeña curva de aprendizaje se amortiza muchas veces.