Expresiones Regulares

4

Click here to load reader

description

Taller de Expresiones Regulares

Transcript of Expresiones Regulares

Page 1: Expresiones Regulares

1 Expresiones Regulares

Con las expresiones regulares se representan patrones de cadenas de caracteres. Una ER r se encuentra completamente definida mediante el conjunto de cadenas con las que concuerda. Este conjunto se denomina Lenguaje generado por la expresión regular y se denota como L(r). Este lenguaje depende principalmente del conjunto de caracteres que se tenga disponible, que por lo general es ASCII. A este conjunto de caracteres se le denomina alfabeto y se representa mediante el símbolo griego (sigma).

Una ER r también contendrá caracteres del alfabeto, pero estos tendrán un significado diferente, debido a que representarán a un conjunto de caracteres en particular o si están entre comillas simples, representaran a un metacaracter, lo que significa, que es la presencia de ese carácter en particular dentro de la ER, también se utilizarán operadores como |, (), [], *, +.

2 Definición de Expresiones regulares

Básicas: Estas representan a los caracteres simples del alfabeto, los cuales corresponden con si mismos.

Dado cualquier carácter a del alfabeto , indicamos que la ER a corresponde al carácter a y la escribimos L(a) = {a}, conjunto formado por el elemento a.

Cadena vacía: Es la cadena que no corresponde a ningún caractér . Utilizaremos el símbolo para denotarla, de tal modo podremos definirla como L() = {}, conjunto formado por el elemento cadena vacía.

Conjunto vacío: Conjunto que no contiene ninguna cadena. Lo representaremos con el símbolo y lo definiremos como L() = { }, conjunto sin elementos.

3 Operaciones Sobre las Expresiones Regulares

Existen tres operaciones básicas que se pueden realizar sobre las ER:

1. Selección de alternativas: Se indica con el operador | (barra vertical). Si r y s son ER, entonces r | s es una ER que define a cualquier cadena que concuerde con una r o una s, también se dice que r | s, es la unión de los lenguajes de r y s y lo podemos definir: L(r | s) = L(r) U L(s). Esta operación se puede extender a más de dos ER.

2. Concatenación: Se indica con la yuxtaposición de las ER. Si r y s son ER, entonces rs es una ER que define a cualquier cadena que concuerde con la concatenación de r y s, esta operación la podemos definir: L(rs) = L(r)L(s). Esta operación se puede extender a más de dos ER.

3. Repetición o Cerradura: También se conoce con el nombre de cerradura de Kleene. Se indica con el operador *. Si r es una ER, entonces r* es una ER que define a las cadenas de caracteres representadas por la concatenación repetida de r en n veces, o sea que lo podemos definir como: L(r*) = L(r)* o también lo

podemos definir como la unión infinita de conjuntos r: r* = rn = r0 r1 r2... rn

Page 2: Expresiones Regulares

4 Precedencia de Operaciones

Se estima el siguiente nivel de importancia:

1. Repetición2. Concatenación3. Selección de alternativas

Adicionalmente si se desea modificar esta prioridad se deben utilizar los paréntesis.

5 Extensión para las Expresiones Regulares

Una o más repeticiones: También se conoce con el nombre de cerradura positiva. Se indica con el operador +. Si r es una ER, entonces r+ es una ER que define a las cadenas de caracteres representadas por la concatenación repetida de r en n veces, o sea que lo podemos definir como: L(r+) = L(r) + o también lo

podemos definir como la unión infinita de conjuntos r: r+ = rn = r1 r2 r3... rn. Cualquier caractér: El uso del punto ‘.’ Dentro de una ER hace que no se

requiera la enumeración de todos los caracteres de un alfabeto, por lo tanto, esto significa la concordancia con cualquier carácter.

Intervalo de caracteres: Para hacer referencia a un rango de valores que se consideran definidos por naturaleza: ej: A..Z o A-Z

Cualquier carácter que no esté en un conjunto dado: Esta es la forma de negar a un carácter, caracteres o expresiones. Se denota con el símbolo ~ .

Subexpresiones opcionales: Es la forma de expresar que un elemento, caractér o expresión sea opcional y no obligatorio. Para esto utilizaremos los corchetes [].

Opcionalidad: Se utiliza para indicar que un elemento, caractér o expresión es opcional o que si aparece, tendrá una sola aparición, dicho de otra forma es expresar que un elemento, caractér o expresión aparece cero o una vez. Se denota con el símbolo ?. También se puede representar como ( | r ) = {, r}

6 Ejemplos

Analice, interprete y escriba los lenguajes generados por las siguientes ER.

ab ( a | b ) = {aba, abb} a? ( 0 | 1 | b* ) = {0, 1, b, bb ,bbb ,a0 ,a1 ,ab ,abbb , ...} ( a | b )2 = {aa, ab, bb, ba} ( a | b ) (a | b ) = {aa, ab, ba, bb}

a .* = {a, aa, a$, a&d#012345, ...}

Page 3: Expresiones Regulares

7 TALLER

A. Desarrolle las siguientes ER escribiendo los conjuntos resultantes

1. a . b = { }2. (0..9)= { }3. (ab)*= { }4. a (0..9)+? b = { }5. ([(0-9)+]ab)* = { }

B. Escriba ER equivalentes1. (a | b | c) (a | b | c) (a | b | c) = 2. ac* | ad* = 3. ((‘$’ (0..9)+) | ‘[‘ (0..9)+ ‘]’ | (0..9)+ | (+ | - )? (0..9) + ) | =4. L (L+ | D+ | ‘_’ (L+ | D+))* =5. (a | b | c) 2 ‘_’ ((0..9)+ | ) =

C. Dibuje el diagrama de transiciones de las siguientes ER1. (a*a | b* b)*

2. ((0..9)* | (A..Z)*)+ | (a..z ‘_’ (0..9)+[‘.’ (0..9)+] )3. (0 | 1) + (0 | 1)*4. L L L D D D

5. ( + | - | ) D+ (‘.’ (0..9)+ | ) (‘E’ ( + | - | ) D+ | )