Está en la página 1de 28

Expresiones Regulares

LENGUAJES FORMALES
Lenguajes regulares
Gramáticas
Las gramáticas formales definen un lenguaje describiendo cómo se pueden generar las cadenas del lenguaje.
Una gramática formal es una cuadrupla G = (N, T, P, S) donde:
Gramáticas regulares:
Son las gramáticas más restrictivas.
El lado derecho de una producción debe contener un símbolo terminal y, como máximo, un símbolo no terminal.
Lineales a derecha, si todas las producciones son de la forma:

Lineales a izquierda, si todas las producciones son de la forma:


Expresión Regular ER
El objetivo de la ER es representar todos los posibles lenguajes definidos sobre una alfabeto ∑,
en base a una serie de lenguajes primitivos, y unos operadores de composición.
Lenguajes primitivos: el lenguajes vacío, el lenguajes formados por la palabra vacía, y los
lenguajes correspondientes a los distintos símbolos del alfabeto.
Operadores de composición: Unión, concatenación y cierre
Ejemplo
Lenguaje formado por las cadenas que terminan en 01:
∑ = {0,1}
{0,1}*.{0,1} = ({0} U {1})*.{0,1}
ER = (0+1)*01
Lenguaje formado por palabras de longitud par sobre a’s y b’s:
∑ = {a,b}, L={a,b}, L2 ={aa,ab,bb,ba}
{aa,ab,bb,ba}*
{{aa} U {ab} U {bb} U {ba}}*

ER = (aa + ab + bb + ba)*
Definición
Dado un alfabeto ∑, las expresiones regulares sobre ∑ se definen de forma recursiva por las
siguientes siglas:
Expresiones regulares primitivas:
Definición
Sean α y β ER, entonces son ER derivadas:
Definición
Precedencia de los operadores
Ejemplo:
Expresiones regulares:
◦ ( 0 + 1 ) * 01
◦ ( aa + ab + ba + bb )*
◦ a*(a+b)
◦ ( aa ) * ( bb ) * b
Lenguaje descrito por una ER
Sea r una expresión regular sobre ∑, el lenguaje descrito por r, L(r), se define recursivamente de
la siguiente forma:
Ejemplo:
Ejemplo
1. L ((aa)*(bb)*b)
2. L(a*.(b+c))
3. L(0*.1.0*)
Significado de las ER
Las ER son simplemente fórmulas cuyo propósito es representar cada una de ellas un lenguaje.
Así el significado de una ER es simplemente el lenguaje que ella representa:
Por ejemplo, la ER “ø” representa el conjunto vacío { }
Para comprender intuitivamente la manera en que las ER representan lenguajes, se considera el
proceso de verificar si una palabra dada w pertenece o no al lenguaje representado por un ER
dada.
Elementos
Una o mas repeticiones +
Ninguna o más repeticiones *
Cualquier carácter: .*b.*
Un rango de caracteres [ ]
Cualquier carácter excepto un conjunto dado - (a|b)
Opcionalidad ?
Metodología de diseño de las ER
Al tratar de encontrar una ER para un lenguaje dado, mientras más complejo sea el lenguaje es
obvio que resulta más difícil encontrar por pura intuición dicha ER. En estos casos puede ser
conveniente trabajar en forma metódica.
Una técnica que funciona en muchos casos consiste en determinar primero la estructura
de la ER, dejando unos “huecos” pendientes para resolverse luego. Estos huecos,
que llamaremos contextos, son también lenguajes para los que habrá´ que encontrar una ER.
Metodología de diseño de las ER
Obtener una ER para el lenguaje en el alfabeto {a, b, c} en que las palabras contienen
exactamente una vez dos b contiguas. Por ejemplo, las palabras aabb, babba, pertenecen al
lenguaje, pero no aaba, abbba ni bbabb.
Para resolver este problema, se expresa primero la estructura de la ER de la manera siguiente:
< contexto1 > bb < contexto2 >
Metodología de diseño de las ER
El lenguaje de < contexto1 > comprende a las palabras que no tienen bb y además no terminan
en b. Esto es equivalente a decir que toda b está seguida de una a o una c. Esto quiere decir que
la ER de este contexto va ser de la forma:
(. . . b(a + c) . . .)∗
Donde los detalles que faltan están representados por las “. . .”. Lo que falta por considerar es
que puede haber cualquier cantidad de a’s o c’s en el < contexto1 >, por lo que dicho contexto
queda como:
(b(a + c) + a + c)∗
Metodología de diseño de las ER
Similarmente se puede obtener la expresión para < contexto2 >, que es (a + c + (a + c)b)∗ ,o por
lo que finalmente la ER del problema es:
(b(a + c) + a + c)∗ bb(a + c + (a + c)b)∗
Ejercicios: Dado el ∑ = {a, b}
1. El lenguaje de todas las palabras que tienen exactamente una a
2. El lenguaje de todas las palabras que comienzan con b
3. El lenguaje de todas las palabras que contienen la cadena ba
4. Lenguaje de todas las palabras que comienzan con b y terminan con a
5. Lenguaje de todas las palabras que tienen exactamente dos a’s
6. Lenguaje de todas las palabras que tienen un número par de símbolos (palabras de longitud
par).
TRABAJO EN CLASE
1. Σ = {a,b}. Lenguaje de todas las palabras que tienen la cadena ab un número par de veces
2. Σ = {a,b}. Lenguaje de todas las palabras que tienen un número impar de a’s.
3. Σ = {a,b}. Lenguaje de todas las palabras que tienen un número par de a’s o un número impar
de b’s
4. Σ = {a,b,c}. Lenguaje de todas las palabras que tienen un número par de símbolos
5. Σ = {a,b,c}. Lenguaje de todas las palabras que tienen un número impar de símbolos
6. Σ = {a,b,c}. Lenguaje de todas las palabras que comienzan con c y terminan con b.
7. Σ = {a,b}. Lenguaje de todas las palabras que tienen un número par de a’s y un número impar
de b’s
TRABAJO EN CLASE
Determinar la ER que represente a los siguientes lenguajes:
◦ L1= {1111010 ; 110010 ; 10 ; 0000010; 1111110}
◦ L2={armi ; ampeti ; ameri ; ai}
◦ L2={sum_12 ; n_15 ; jdk24 ; rest1452}
◦ L4={452.45 ; -874.0 ; 88 ; 47}
◦ L5={172.16.147.1/16 ; 192.168.1.2 ; 127.0.0.1 ; 200.209.165.2}
◦ L6={daniel_12a@hotmail.com; jm2017@gmail.com; sony.ecuador@yahoo.com}
ELEMENTOS DE LAS ER
ELEMENTOS DE LAS ER
EJERCICIOS
ER para correos electrónicos

ER para números enteros o decimales, que puedan ser positivos o negativos


ER
Dos ER r1 y r2 se dicen equivalentes, r1 = r2, si describen el mismo lenguaje, esto es si L(r1)=L(r2),
En base a esta definición se pueden establecer las siguientes equivalencias y propiedades:
Respecto a las operaciones + y . :
1.α + (β + γ) = (α + β) + γ
2.α + β = β + α
3.α + Ø = α
4.α + α = α
5.α · λ = α
6.α · Ø = Ø
7.α · (β · γ) = (α · β) · γ
8.α · (β + γ) = αβ + αγ, (β + γ) · α = βα + γα
Equivalencias de las ER
Respecto a la operación *:
9.λ* = λ
1O.Ø* = λ
11.α · α* = α* · α
12.α* = α* · α* = (α*)*
13.α* = λ + α · α*
14.(α + β)* = (α* + β*)*
15.(α + β)* = (α* · β*)* = (α* · β)* · α*
16.α · (β · α)* = (α · β)* · α
17. Si λЄ L(a), entonces a+λ=a
Aplicaciones de las expresiones regulares
En tareas de Procesamiento de Lenguaje Natural (PLN) es muy frecuente la utilización de
expresiones regulares para la detección de patrones en texto para su posterior análisis y
tratamiento.
La tarea del reconocimiento de entidades tradicionalmente está compuesto por dos sub-tareas:
la detección o identificación y la clasificación de las entidades
Típicamente un sistema de extracción de información extrae informaciones sobre entidades,
relaciones y eventos a partir de documentos en un dominio restringido
Aplicaciones de las expresiones regulares
Por ejemplo, se desea detectar, etiquetar y extraer la información referente a las entidades de
tipo persona y moneda. Para el ejemplo: Juan tiene $5,00 y Pedro tiene $4,00.

También podría gustarte