Una expresión regular (abreviada como Regex/RegExp) es un lenguaje de patrones de texto que utiliza una sola cadena para describir y coincidir con una serie de cadenas que cumplen ciertas reglas sintácticas. Su historia se remonta a la década de 1950, cuando el neurólogo Warren McCulloch y el matemático Walter Pitts propusieron un modelo matemático de neuronas; más tarde, el matemático Stephen Kleene propuso en 1956 una descripción algebraica de「conjuntos regulares」basada en ello. Ken Thompson, padre de Unix, implementó por primera vez expresiones regulares en el editor QED a fines de la década de 1960, y desde entonces las expresiones regulares se convirtieron en una funcionalidad central de la cadena de herramientas de Unix (grep, sed, awk, vi).
En los lenguajes de programación modernos, las expresiones regulares son casi una capacidad estándar: RegExp de JavaScript, el módulo re de Python, java.util.regex de Java, la clase Regex de .NET, el paquete regexp de Go brindan soporte regex. Las expresiones regulares se utilizan ampliamente en validación de formularios (correo/teléfono/DNI), búsqueda y reemplazo de texto (buscar y reemplazar en editores), análisis de logs (extraer logs ERROR), rastreo web (extracción de contenido HTML), limpieza de datos (ETL), coincidencia de rutas, filtrado de entrada y protección de seguridad (reglas WAF), entre otros escenarios.
Los conceptos centrales de las expresiones regulares incluyen: clases de caracteres (\d dígitos, \w caracteres de palabra, \s espacios en blanco), cuantificadores (* cero o más, + uno o más, ? cero o uno, {n,m} número específico), anclajes (^ inicio, $ final, \b límite de palabra), grupos ((...) grupo de captura, (?:...) grupo sin captura, (?<name>...) grupo con nombre), alternancia (|), conjuntos de caracteres ([a-z]), aserciones de búsqueda ((?=...) búsqueda positiva hacia adelante, (?!) búsqueda negativa hacia adelante), etc. Dominar regex puede mejorar enormemente la eficiencia del procesamiento de texto, pero también debes tener cuidado de evitar trampas de rendimiento como ReDoS.