Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EXPRESIONES REGULARES
2.1 DEFINICIÓN FORMAL DE UNA EXPRESIÓN REGULAR
2.2 OPERACIONES
2.3 APLICACIONES EN PROBLEMAS REALES
_________________________________________________________________________
CAPITULO II. EXPRESIONES REGULARES
2.1 DEFINICIÓN FORMAL DE UNA EXPRESIÓN REGULAR
Las Expresiones Regulares representan patrones para generar, seleccionar o producir
coincidencias en cadenas de caracteres de un Lenguaje Regular.
Un 𝒍𝒆𝒏𝒈𝒖𝒂𝒋𝒆 𝒓𝒆𝒈𝒖𝒍𝒂𝒓 𝐿 sobre un alfabeto ∑, se encuentra definido de la siguiente
manera:
1. Un lenguaje vacío ∅ es un lenguaje regular.
2. Una cadena vacía {𝜀} es un lenguaje regular.
3. Para toda 𝑎 ∈ ∑, {𝑎} es un lenguaje regular
4. Si Existen dos lenguajes regulares, entonces las operaciones de Unión,
concatenación y cerradura kleene de dichos lenguajes son lenguajes regulares. [3]
En la definición anterior se observa que no todas las operaciones de lenguaje que se
aprendieron en el capítulo anterior forman parte de un lenguaje regular, sin embargo, son
indispensables para la comprensión de este capítulo. Para comprender mejor la definición
anterior véase el Ejemplo 2.1.
Ejemplo 2.1:
Supóngase que se tienen dos lenguajes 𝐿1 = {0} 𝑦 𝐿2 = {1} sobre el alfabeto ∑ = {0,1}.
Entonces:
Ejemplo 2.2:
Para ejemplificar la definición anterior, el conjunto {𝑏𝑎𝑤𝑎𝑏|𝑤 ∈ {𝑎, 𝑏}∗ } es un conjunto
regular sobre {𝑎, 𝑏}
Demostración:
Conjunto Expresión Justificación
1. {𝑎} 𝑎 Base
2. {𝑏} 𝑏 Base
3. {𝑎}{𝑏} = {𝑎𝑏} 𝑎𝑏 Inductivo. Concatenación
4. {𝑎} ∪ {𝑏} = {𝑎, 𝑏} 𝑎∪𝑏 Inductivo. Unión
5. {𝑏}{𝑎} = {𝑏𝑎} 𝑏𝑎 Inductivo. Concatenación
6. {𝑎, 𝑏}∗ (𝑎 ∪ 𝑏)∗ Inductivo. Unión y Cerradura Kleene
7. {𝑏𝑎}{𝑎, 𝑏}∗ 𝑏𝑎(𝑎 ∪ 𝑏)∗ Inductivo. Concatenación, Unión y
Cerradura Kleene
Tabla 2.2
1.2 OPERACIONES
Las operaciones que pueden ser expresadas en una expresión regular son: Concatenación,
Unión, y Cerradura Kleeene.
Precedencia de Operadores en las expresiones regulares
Al igual que con los operadores aritméticos, dentro de las expresiones regulares existe un
nivel de precedencia para su resolución.
1. Se emplean los paréntesis para agrupar a los operadores que se encuentran dentro
de los mismos, y estos deben de realizarse con mayor prioridad.
2. El operador cerradura kleene (*) se aplica solo a la secuencia más corta situada a
su izquierda.
3. Concatenación
4. Unión, que en algunos casos esta operación es posible encontrarla simbolizada de
diferentes maneras (+,∪, |).
Ejercicios Resueltos
Ejemplo 2.3:
Determinar cuáles son las cadenas que pertenecen al lenguaje descrito por la Expresión Regular:
𝒃(𝒂 ∪ 𝒃)𝒄∗ , sobre el alfabeto ∑ = {𝒂, 𝒃, 𝒄}
SOLUCIÓN:
Determinar cuáles son las cadenas que pertenecen al lenguaje descrito por la Expresión Regular:
𝒃𝒄∗ ∪ 𝒂, sobre el alfabeto ∑ = {𝒂, 𝒃, 𝒄}
SOLUCIÓN:
a) Se realiza la operación 𝑐 ∗
𝑐 ∗ = {𝜀, 𝑐, 𝑐𝑐, 𝑐𝑐𝑐, 𝑐𝑐𝑐𝑐, 𝑐𝑐𝑐𝑐𝑐, 𝑐𝑐𝑐𝑐𝑐𝑐, … }
b) Posteriormente 𝒃𝒄∗
{𝑏} ∙ {𝜀, 𝑐, 𝑐𝑐, 𝑐𝑐𝑐, 𝑐𝑐𝑐𝑐, 𝑐𝑐𝑐𝑐𝑐, 𝑐𝑐𝑐𝑐𝑐𝑐, … } = {𝑏, 𝑏𝑐, 𝑏𝑐𝑐, 𝑏𝑐𝑐𝑐, 𝑏𝑐𝑐𝑐𝑐, 𝑏𝑐𝑐𝑐𝑐𝑐, … }
c) Al final se obtiene la unión 𝒃𝒄∗ ∪ 𝒂
{𝑏, 𝑏𝑐, 𝑏𝑐𝑐, 𝑏𝑐𝑐𝑐, 𝑏𝑐𝑐𝑐𝑐, 𝑏𝑐𝑐𝑐𝑐𝑐, … } ∪ {𝑎} = {𝑎, 𝑏, 𝑏𝑐, 𝑏𝑐𝑐, 𝑏𝑐𝑐𝑐, 𝑏𝑐𝑐𝑐𝑐, 𝑏𝑐𝑐𝑐𝑐, … }
Ejemplo 2.5:
Determinar cuáles son las cadenas que pertenecen al lenguaje descrito por la Expresión Regular:
𝒄∗ (𝒂 ∪ 𝒃𝒄∗ ), sobre el alfabeto ∑ = {𝒂, 𝒃, 𝒄}
SOLUCIÓN:
6. 𝑟 ∪ 𝑟 = 𝑟
7. 𝜀𝑟 = 𝑟
8. 𝑟𝜀 = 𝑟
Ley Distributiva
Ejemplo 2.6:
De acuerdo al Teorema 12. (𝜀 ∪ 𝑟)∗ = 𝑟 ∗, la expresión regular (𝜀 ∪ 𝑎𝑎)∗ = (𝑎𝑎)∗ y las cadenas
válidas que representa son:
Es posible probar igualdades haciendo uso de las igualdades ya conocidas. Por ejemplo,
Ejemplo 2.7:
1. Probar que 𝒓 = 𝒔𝒓 ∪ 𝒕.
Si 𝑟 = 𝑠 ∗ 𝑡, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠:
𝑟 = 𝑠∗𝑡
= (𝜀 ∪ 𝑠 + )𝑡 Debido a que 𝑠 ∗ = 𝜀 ∪ 𝑠 + Teorema 12
= (𝜀 ∪ 𝑠𝑠 ∗ )𝑡 Teorema 18
∗
= (𝜀𝑡 ∪ 𝑠𝑠 𝑡) Ley Distributiva Teorema 10
= (𝑡 ∪ 𝑠𝑟) Esto recordando que 𝑟 = 𝑠 ∗ 𝑡
= 𝑠𝑟 ∪ 𝑡 Ley conmutativa Teorema 1
∗
Lo cual prueba que 𝑟 = 𝑠 𝑡, implica que 𝑟 = 𝑠𝑟 ∪ 𝑡.
2.3 APLICACIONES EN PROBLEMAS REALES
Las expresiones regulares se usan frecuentemente en los problemas que impliquen el
análisis de cadenas de caracteres. Tales problemas implican la búsqueda e identificación de
la existencia de una cadena en un fichero o el reconocimiento de cadenas de entrada que
satisfagan ciertos criterios [8].
Pueden servir como lenguaje de entrada de muchos sistemas que procesan cadenas, para
describir de una mejor manera las aplicaciones que ofrecen las expresiones regulares
aplicados en sistemas informáticos se listan las siguientes:
El comando grep de UNIX que expresa un patrón de texto que el usuario desea
encontrar en un archivo.
Analizador léxico que divide el archivo de entrada en unidades lógicas o sintácticas
formados por uno o más caracteres que tienen un significado. Por ejemplo palabras
clave como while, identificadores (cualquier letra seguida de 0 o más letras y/o
dígitos) y signos como +, <. Un generador de analizadores léxicos acepta
descripciones de las formas de las unidades lógicas, que son principalmente
expresiones regulares.
La contraseña de algún sistema que debe de tener un patrón específico para su
validez.
Programas informáticos de corrección gramatical basada en expresiones regulares
donde se analizan las palabras y su estructura para detectar, describir y redactar
cada uno de los errores encontrados de acuerdo a una gramática especificada.
Ejemplo 2.8: