Expresión regular


Una expresión regular (abreviada como regex o regexp ; [1] a veces denominada expresión racional [2] [3] ) es una secuencia de caracteres que especifica un patrón de coincidencia en el texto . Por lo general, estos patrones son utilizados por algoritmos de búsqueda de cadenas para operaciones de "buscar" o "buscar y reemplazar" en cadenas , o para la validación de entrada . Las técnicas de expresión regular se desarrollan en informática teórica y teoría del lenguaje formal .

El concepto de expresiones regulares comenzó en la década de 1950, cuando el matemático estadounidense Stephen Cole Kleene formalizó el concepto de lenguaje regular . Llegaron a ser de uso común con las utilidades de procesamiento de texto de Unix . Desde la década de 1980 existen diferentes sintaxis para escribir expresiones regulares, una es el estándar POSIX y otra, ampliamente utilizada, es la sintaxisPerl .

Las expresiones regulares se utilizan en motores de búsqueda , en cuadros de diálogo de búsqueda y reemplazo de procesadores de texto y editores de texto , en utilidades de procesamiento de texto como sed y AWK , y en análisis léxico . Las expresiones regulares son compatibles con muchos lenguajes de programación.

Las expresiones regulares se originaron en 1951, cuando el matemático Stephen Cole Kleene describió los lenguajes regulares usando su notación matemática llamada eventos regulares . [4] [5] Estos surgieron en la informática teórica , en los subcampos de la teoría de autómatas (modelos de computación) y la descripción y clasificación de lenguajes formales . Otras implementaciones tempranas de coincidencia de patrones incluyen el lenguaje SNOBOL , que no usaba expresiones regulares, sino sus propias construcciones de coincidencia de patrones.

Las expresiones regulares entraron en uso popular a partir de 1968 en dos usos: coincidencia de patrones en un editor de texto [6] y análisis léxico en un compilador. [7] Una de las primeras apariciones de expresiones regulares en forma de programa fue cuando Ken Thompson incorporó la notación de Kleene en el editor QED como un medio para hacer coincidir patrones en archivos de texto . [6] [8] [9] [10] Para mayor velocidad, Thompson implementó la coincidencia de expresiones regulares mediante la compilación justo a tiempo (JIT) con el código IBM 7094 en el Sistema de tiempo compartido compatible , un importante ejemplo temprano de compilación JIT. [11]Más tarde agregó esta capacidad al editor ed de Unix , lo que eventualmente condujo al uso de expresiones regulares de la popular herramienta de búsqueda grep ("grep" es una palabra derivada del comando para la búsqueda de expresiones regulares en el editor ed: que significa "Búsqueda global para líneas coincidentes de expresión regular e impresión"). [12] Casi al mismo tiempo que Thompson desarrolló QED, un grupo de investigadores, incluido Douglas T. Ross, implementó una herramienta basada en expresiones regulares que se utiliza para el análisis léxico en el diseño de compiladores . [7]g/re/p

Muchas variaciones de estas formas originales de expresiones regulares se usaron en programas Unix [10] en Bell Labs en la década de 1970, incluidos vi , lex , sed , AWK y expr , y en otros programas como Emacs (que tiene su propio programa incompatible). sintaxis y comportamiento). Los Regex fueron posteriormente adoptados por una amplia gama de programas, con estas primeras formas estandarizadas en el estándar POSIX.2 en 1992.


Las partes resaltadas en azul muestran los resultados de coincidencia del patrón de expresión regular /h[aeiou]+/g(la letra h seguida de una o más vocales)
Stephen Cole Kleene , quien introdujo el concepto
Traduciendo la estrella Kleene
( s * significa "cero o más de s ")
Una lista negra en Wikipedia que usa expresiones regulares para identificar títulos incorrectos