3. This material has been prepared by Richard E. Aguilar P.
Contenido de la Sesión
• Lenguajes regulares.
• Expresiones regulares.
• Extensiones de las expresiones regulares.
• Operaciones con expresiones regulares.
4.
5. This material has been prepared by Richard E. Aguilar P.
Logro
Al finalizar la sesión el alumno comprende qué son los lenguajes
regulares y las expresiones regulares que los definen, así como
las principales operaciones que pueden ejecutarse sobre
dichas expresiones.
6.
7. This material has been prepared by Richard E. Aguilar P.
Lenguajes regulares
• Es un lenguaje generado por una gramática regular y descrito por una
expresión regular.
• Lo anterior quiere decir, que las expresiones regulares son un meta
lenguaje para describir los lenguajes regulares.
• El conjunto de cadenas generados por una expresión regular se
denomina lenguaje regular o lenguaje generado por una expresión
regular y se escribe como L(r) donde r es una expresión regular.
8. This material has been prepared by Richard E. Aguilar P.
Lenguajes regulares
• Los lenguajes regulares sobre un alfabeto dado Σ son todos los
lenguajes que se pueden formar a partir de los lenguajes básicos Φ, {λ},
{a}, a ϵ Σ, por medio de operaciones de unión, concatenación y estrella
de Kleene.
• Sea Σ un alfabeto, entonces Φ, {λ} y {a}, para cada a ϵ Σ, son lenguajes
regulares sobre Σ. Estos son los denominados lenguajes reglares básicos.
• Si A y B son lenguajes regulares sobre Σ, también lo son:
▪ A U B (unión)
▪ AB (concatenación)
▪ A* (estrella de Kleene)
9. This material has been prepared by Richard E. Aguilar P.
Expresión regular
• Las expresiones regulares representan patrones de cadenas de
caracteres.
• Una expresión regular r se encuentra completamente definida
mediante el conjunto de cadenas con las que concuerda.
• Una expresión regular r también contendrá caracteres del
alfabeto, pero esos caracteres tendrán un significado diferente:
en una expresión regular todos los símbolos indican patrones.
• Una expresión regular r puede contener caracteres que tengan
significados especiales denominados metacaracteres.
10. This material has been prepared by Richard E. Aguilar P.
Expresión regular
• Las expresiones regulares representan lenguajes regulares y
su propósito es simplificar la escritura de los lenguajes
regulares.
• La siguiente es la definición recursiva de las expresiones
regulares sobre su alfabeto Σ dado.
1. Expresiones regulares básicas:
• Φ es una expresión regular que representa al lenguaje Φ
• λ es una expresión regular que representa al lenguaje {λ}
• a es una expresión regular que representa al lenguaje {a}, a ϵ Σ
2. Si R y S son expresiones regulares sobre Σ, también lo son: R|S, RS y R*
11. This material has been prepared by Richard E. Aguilar P.
Expresiones regulares básicas
• Las expresiones regulares básicas son precisamente los caracteres
simples del alfabeto, los cuales se corresponden a si mismos.
• Dado cualquier caracter a del alfabeto Σ, indicamos que la expresión
regular a corresponde al caracter a escribiendo: L(a) = {a}
• Necesitamos definir la cadena vacía, es decir la cadena que no
contiene ningún carácter, para ello escribimos: L(λ) = {λ}
• Definimos también un símbolo que corresponda a la ausencia de
cadenas, es decir cuyo lenguaje sea el conjunto vacío, para ello
escribimos: L(Φ) = { }
12. This material has been prepared by Richard E. Aguilar P.
Operaciones de expresiones
regulares
• Existen tres operaciones básicas en las expresiones regulares:
• Selección entre alternativas, la cual se indica con el metacaracter |
• Concatenación, que se indica mediante yuxtaposición, sin utilizar un
metacaracter.
• Repetición o “cerradura”, la cual se indica mediante el
metacaracter *
13. This material has been prepared by Richard E. Aguilar P.
Selección entre alternativas
• Si r y s son expresiones regulares, entonces r|s es una
expresión regular que define a cualquier cadena que
concuerda con r o con s.
• En términos de lenguajes, el lenguaje de r|s es la unión de los
lenguajes de r y s, es decir: L(r|s) = L(r) U L(s)
14. This material has been prepared by Richard E. Aguilar P.
Concatenación
• La concatenación de dos expresiones regulares r y s se escribe
como rs y corresponde a cualquier cadena que sea la
concatenación de dos cadenas, con la primera de ellas
correspondiendo a r y la segunda correspondiendo a s.
• Podemos el efecto de la concatenación en términos de lenguajes
generados al definir la concatenación de dos conjuntos de
cadenas S1 y S2, el conjunto concatenado S1S2 es el conjunto de
cadenas de S1 complementado con todas las cadenas de S2.
• En términos de lenguajes, la concatenación puede describirse
como sigue: L(rs) = L(r)L(s)
15. This material has been prepared by Richard E. Aguilar P.
Repetición
• La operación de repetición de una expresión regular,
denominada también en ocasiones cerradura (de Kleene),
se escribe como r*, donde r es una expresión regular.
• La expresión regular r* corresponde a cualquier
concatenación finita de cadenas, cada una de las cuales
corresponde a r.
• En términos de lenguajes, la repetición puede describirse
como sigue: L(r*) = L(r)*
16. This material has been prepared by Richard E. Aguilar P.
Precedencia de operaciones
• La convención estándar es que la repetición tiene la mayor
precedencia.
• La concatenación le sigue en precedencia a la repetición.
• La selección tiene la precedencia mas baja.
• Si deseamos indicar una precedencia diferente, entonces
debemos de utilizar paréntesis.
17. This material has been prepared by Richard E. Aguilar P.
Nombres para expresiones
regulares
• A menudo es útil como una forma de simplificar la notación
proporcionar un nombre para una expresión regular extensa.
De modo que no sea necesario escribir la expresión misma
cada vez que deseamos utilizarla.
• Por lo general esto es muy útil cuando definimos elementos
de un lenguaje de programación, por ejemplo cuando
deseamos definir a un numero entero compuesto de uno o
más dígitos numéricos.
18. This material has been prepared by Richard E. Aguilar P.
Extensiones para las expresiones
regulares
• Hemos definido las expresiones regulares con un conjunto
mínimo de operaciones y podríamos limitarnos solo a ellas.
• Sin embargo, el construir expresiones regulares utilizando solo
las operaciones básicas, en ocasiones es poco manejable,
ya que se crean expresiones regulares que son más
complicadas de lo que serian si se dispusiera de un conjunto
de operaciones más expresivo y por lo tanto más flexible.
19. This material has been prepared by Richard E. Aguilar P.
Una o más repeticiones
• Una situación típica que surge es la necesidad de una o más
repeticiones en lugar de ninguna (en cuyo caso utilizaríamos
r*), lo que garantiza que aparece por lo menor una cadena
correspondiente a r y no permite la cadena vacía λ
• Para esta situación utilizamos el metacaracter + tal como
sigue: r+
20. This material has been prepared by Richard E. Aguilar P.
Cualquier caracter
• Una situación común es la necesidad de generar cualquier
carácter en el alfabeto, de no contar con una operación
especial esto requerirá que todo carácter en el alfabeto sea
enumerado en una alternativa.
• Un metacaracter típico que se utiliza para expresar una
concordancia de cualquier carácter es el punto “.” el cual
no requiere que el alfabeto se escriba en forma extendida.
21. This material has been prepared by Richard E. Aguilar P.
Intervalo de caracteres
• A menudo necesitamos escribir un intervalo de caracteres, esto
pudiera hacerse mediante el uso del operador de selección, sin
embargo esto puede ser muy extenso.
• Una alternativa es tener una notación especial para esta
situación, y una que es muy común es la de emplear corchetes y
un guion, tal como sigue: [a-z] (para las letras minúsculas). Lo
mismo aplica a los intervalos múltiples.
• El uso de corchetes también se emplea para alternativas
individuales de modo que a|b|c puede expresarse como [abc]
22. This material has been prepared by Richard E. Aguilar P.
Cualquier carácter que no esté en
un conjunto dado
• A menudo es de utilidad excluir un carácter simple del
conjunto de caracteres por generar.
• Aunque existe la posibilidad de diseñar un metacaracter
para indicar la operación de negación o complementaria
sobre un conjunto de alternativas, es una opción mas simple
utilizar la notación tal como sigue: [^a] para indicar que a no
debe considerarse.
• También es posible indicar que no sea ninguno de varios
caracteres, para ello indicamos: [^abc]
23. This material has been prepared by Richard E. Aguilar P.
Subexpresiones opcionales
• Un suceso que se presenta comúnmente es el de cadenas
que contienen partes opcionales que pueden o no aparecer
en cualquier cadena en particular.
• Para ello se utiliza el metacaracter de signo de interrogación
“?”, con dicho metacaracter expresamos que la cadena es
opcional o lo que es lo mismo, que la cadena puede
aparecer cero o una vez.
• Por ejemplo un numero entero puede tener o no signo, lo
cual podemos expresar como: (+|-)?
27. This material has been prepared by Richard E. Aguilar P.
Resumiendo
• Un lenguaje regular es generado por una gramática
regular y descrito por una expresión regular.
• Las expresiones regulares representan patrones de
cadenas de caracteres.