Expresión regular


Una expresión regular (abreviada como regex o regexp ; [1] también conocida como expresión racional [2] [3] ) es una secuencia de caracteres que especifica un patrón de búsqueda 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. Es una técnica desarrollada 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ó la descripción de un 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 sintaxis Perl .

Las expresiones regulares se utilizan en motores de búsqueda, 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 . Muchos lenguajes de programación brindan capacidades de expresión regular ya sea incorporadas o a través de bibliotecas , ya que tiene usos en muchas situaciones.

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 finalmente 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 utilizaron 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 . Los Regex fueron posteriormente adoptados por una amplia gama de programas, con estas primeras formas estandarizadas en el estándar POSIX.2 en 1992.


Los resultados de coincidencia del patrón.
(? < = \ .) {2,}(?= [AZ] ) 
Al menos dos espacios coinciden, pero solo si aparecen directamente después de un punto (.) y antes de una letra mayúscula.
Stephen Cole Kleene , quien introdujo el concepto
Una lista negra en Wikipedia que usa expresiones regulares para identificar títulos incorrectos
Traduciendo la estrella Kleene
( s * significa "cero o más de s ")