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 . Por lo general, los algoritmos de búsqueda de cadenas utilizan estos patrones para operaciones de "buscar" o "buscar y reemplazar" en cadenas , o para la validación de entradas. 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 han existido 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 , buscar y reemplazar diálogos 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 proporcionan capacidades de expresiones regulares integradas o mediante 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 compilación Just -In-Time (JIT) con el código IBM 7094 en el Compatible Time-Sharing System , un importante ejemplo temprano de compilación JIT. [11]Más tarde agregó esta capacidad al editor de Unix ed , lo que eventualmente llevó 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 de coincidencia de expresión regular e impresión "). [12] Casi al mismo tiempo que Thompson desarrolló QED, un grupo de investigadores que incluía a 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, incluyendo vi , lex , sed , AWK y expr , y en otros programas como Emacs . Las expresiones regulares fueron posteriormente adoptadas 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] ) 
Se hacen coincidir al menos dos espacios, 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 utiliza expresiones regulares para identificar títulos incorrectos.
Traducir la estrella de Kleene
( s * significa "cero o más de s ")