Sunteți pe pagina 1din 11

ndice

Introduccin ...............................................................................................................................................1
2.1 Definicin formal de una ER. ...........................................................................................................2
2.2 Operaciones ....................................................................................................................................4
2.3 Aplicaciones en problemas reales ...................................................................................................7
Conclusin ..................................................................................................................................................9
Referencias bibliogrficas...........................................................................................................................10

Introduccin

En esta investigacin dar a conocer la definicin de las expresiones regulares, sus operaciones y sus
aplicaciones en problemas reales.
Para empezar, una expresin regular describe una o ms cadenas que deben coincidir al buscar en un cuerpo
de texto. La expresin acta como un modelo de caracteres que se compara con el texto que se busca. Es
posible usar expresiones regulares para buscar modelos en una cadena, reemplazar texto y extraer
subcadenas.
Las expresiones regulares estn disponibles en casi cualquier lenguaje de programacin, pero aunque su
sintaxis es relativamente uniforme, cada lenguaje usa su propio dialecto.
Si es la primera vez que te acercas al concepto de expresiones regulares (regex para abreviar) te animar
saber que seguro que ya las has usado, an sin saberlo, al menos en su vertiente ms bsica. Por ejemplo,
cuando en una ventana ejecutamos dir *.* para obtener un listado de todos los archivos de un directorio,
estamos utilizando el concepto de expresiones regulares, donde el patrn * coincide con cualquier cadena de
caracteres.

Unidad 2. Expresiones Regulares


Una expresin regular, a menudo llamada tambin
regex, es una secuencia de caracteres que forma un
patrn de bsqueda, principalmente utilizada para
la bsqueda de patrones de cadenas de caracteres
u operaciones de sustituciones.

Figura 1. Prioridad de operadores

2.1. Definicin formal de una ER


Las expresiones regulares representan patrones de cadenas de caracteres.
Una expresin regular r se encuentra completamente definida mediante el conjunto de cadenas con las que
concuerda.
Este conjunto se denomina lenguaje generado por la expresin regular y se escribe como L(r).
El lenguaje depende, del conjunto de caracteres que se encuentran disponible (ASCII), el conjunto ser ms
general que el de caracteres, en cuyo caso los elementos del conjunto se describen como smbolos, (conocido
como alfabeto) y por lo general se representa mediante .
Una expresin regular r tambin contiene caracteres del alfabeto, pero tienen significado diferente: en una
expresin regular todos los smbolos indican patrones.

Una expresin regular r puede contener caracteres que tengan significados especiales (metacaracteres o
metasmbolos)

Figura 2. Propiedades de equivalencia

Expresiones regulares bsicas: Son los caracteres simples del alfabeto, los cuales se corresponden a s mismos.
Dado cualquier carcter a del alfabeto , la expresin regular a corresponde al carcter a escribiendo
L(a) = {a}.

Un smbolo que indica una concordancia con la cadena vaca, se utiliza el smbolo para denotar la
cadena vaca establecido L() ={}
Un smbolo ms que corresponde a la ausencia de cadenas, cuyo lenguaje sea el conjunto vaco,
escrito como { }, se utiliza y se denota L() = { }.

Figura 3. Ejemplos de expresiones regulares

2.2. Operaciones
Existen tres operaciones bsicas en las expresiones regulares:
Seleccin entre alternativas, la cual se indica mediante el metacarcter |
Concatenacin, que se indica mediante yuxtaposicin (sin un metacarcter)
Repeticin o cerradura, la cual se indica mediante el metacarcter *.
Seleccin entre alternativas. Si r y s son expresiones regulares, entonces r|s es una expresin regular que
define cualquier cadena que concuerda con r o con s.
El lenguaje r|s es la unin de los lenguajes de r y s, o L(r|s) = L(r) L(s).
Considere la expresin regular a|b: corresponde tanto al carcter a como al carcter b,
L(a|b)=L(a)L(b)={a} {b} = {a,b}.
La seleccin se puede extender a ms de una alternativa, L(a|b|c|d) ={a,b,c,d}.

Figura 4. Representacin grfica de unin

Concatenacin. La concatenacin de dos expresiones regulares r y s se escribe como rs, y corresponde a


cualquier cadena que sea la concatenacin de dos cadenas, con la primera de ellas correspondiendo a r y
la segunda correspondiendo a s.

Por ejemplo: la expresin regular ab corresponde slo a la cadena ab, mientras que la expresin regular (a|b)c
corresponde a las cadenas ac y bc.
Dados dos conjuntos de cadenas S1 y S2, el conjunto concatenado de cadenas S1S2 es el conjunto de cadenas
de S1 complementado con todas las cadenas de S2.
Si S1={aa,b} y S2={a,bb}, entonces S1S2={aaa,aabb,ba,bbb}.
La operacin de concatenacin para expresiones regulares se puede definir como L(rs)=L(r)L(s).
La concatenacin se puede extender a ms de dos expresiones regulares: L(r1,r2,rn)=L(r1)L(r2)L(rn)=el
conjunto de cadenas formado al concatenar todas las cadenas de cada una de las L(r1),,L(rn).

Figura 5. Representacin grfica de concatenacin

Repeticin. Denominada tambin como cerradura, se escribe r*, donde r es una expresin regular. La
expresin regular r* corresponde a cualquier concatenacin finita de cadenas, cada una de las cuales
corresponde a r.
Por ejemplo a* corresponde a las cadenas , a, aa, aaa,
Se puede definir la operacin de repeticin en trminos de lenguajes generados definiendo, una operacin
similar * para conjuntos de cadenas. Dado un conjunto S de cadenas, sea:
= {}
Esta es una unin de conjuntos infinita, pero cada uno de sus elementos es una concatenacin finita de
cadenas de S. Descrito:

=
=0

Donde

= , . .

es

la

concatenacin

de

por

veces

( 0 = {}. )

Una vez analizado se define la operacin de repeticin para expresiones regulares como:

Considere la expresin (a|bb)*, corresponde a cualquiera de las cadenas siguientes: , a, bb, aa, abb, bba,
bbbb, aaa, aabb y sucesivamente.
En trminos de lenguajes, L((a|bb)*)=L(a|bb)*={a,bb}*={, a, bb, aa, abb, bba,}

Figura 6. Ejemplos

Precedencia de operaciones y el uso de los parntesis. La descripcin precedente no toma en cuenta la


cuestin de la precedencia de las operaciones de eleccin, concatenacin y repeticin.
Dada la expresin regular a|b*, se puede interpretar como (a|b)* o como a|(b*) que difieren en demasa:
L((a|b)*)={, a, b, aa, ab, ba, bb,} mientras que L(a|(b*))={, a, b, bb, bbb, }. La convencin estndar es
que la repeticin debera tener mayor precedencia, por lo que la segunda interpretacin es la correcta.

Entre las tres operaciones, se le da al * la precedencia ms alta, a la concatenacin se le da la precedencia


que sigue y a la | se le otorga la precedencia ms baja. De esta forma a|bc* se interpreta como a|(b(c*)),
mientras que ab|c*d se interpreta como (ab)|((c*)d).
Los parntesis aqu se usan igual que en aritmtica, pero el * tiene precedencia ms alta que +.

Nombres para expresiones regulares. Es til como una forma de simplificar la notacin proporcionar un
nombre para una expresin regular larga, de modo que no se escriba la misma expresin.
Si se desea desarrollar una expresin regular para una secuencia de uno o ms dgitos numricos:
(0|1|2| 9) (0|1|2||9)*
o se podra escribir dgito dgito*
donde dgito = 0|1|2||9
es una definicin regular del nombre dgito.

El uso de una definicin regular es muy conveniente, pero introduce la compilacin agregada de que el
nombre mismo se convierta en un metasmbolo y se deba encontrar un significado para distinguirlo de la
concatenacin de sus caracteres.

Extensiones expresiones regulares


Una o ms repeticiones:
Tambin conocida como cerradura positiva es una variante de la cerradura Kleene que indica cero o ms
repeticiones, se denota con + y equivale una o ms repeticiones.
Ejemplo: (0|1)+
Cualquier carcter:
Se denota con el metacarcter. y equivale a que puede ser reemplazado con cualquier carcter del alfabeto
Ejemplo: .*1.* (todas las cadenas que contengan al menos un 1)
Intervalo:
Se denota con corchetes y un guion.
Ejemplo: [a-z]
Cualquier carcter que no est en el conjunto
Se denota con la el metacarcter -, significa que no incluya el o las expresiones regulares afectadas.
Ejemplo: - (a|c)
Subexpresin opcional
Metacarcter ? Indica la opcionalidad de cadenas que pueden o no aparecer
Ejemplo: (+|-)? dgito

2.3. Aplicaciones en problemas reales


Los autmatas y las expresiones regulares tienen diversas aplicaciones en el mbito de las ciencias de la
computacin como en la seguridad de redes, la generacin de cdigo, entre otros.
Autmatas finitos no determinsticos con transiciones etiquetadas
Dada una expresin regular al pasar al autmata resultante, dicho autmata debe ser capaz de reconocer si
determinada cadena pertenece o no al lenguaje que define la expresin regular inicial.
Este proceso presenta el problema de no poder determinar la posicin exacta de sub-expresin de la
expresin regular cuando la cadena si coincide con el lenguaje, existen algoritmos para resolver ese problema
pero estos poseen complejidades muy elevadas.

Aplicacin de expresiones regulares en la Deteccin de intrusiones en la red


Se propone un programa o un circuito de alta velocidad para comprobar la coincidencia de un patrn
determinado en un texto dado, lo cual puede ser aplicado en la deteccin de intrusos en redes, debido a la
arquitectura sistlica del circuito la cual consta de unidades de procesamiento simples.

Este proyecto trata del reconocimiento de una determinada subclase de una determinada expresin regular,
el patrn es puesto en el circuito antes de iniciar la comprobacin de coincidencia y el texto para ser
recuperado se introduce en el circuito carcter por carcter.
Esta nueva propuesta de sistema de deteccin de intrusos en redes la cual consta del motor de comprobacin
de coincidencia de patrones, este motor est constituido por un array sistlico de unidades de procesamiento
simple el cual es denominado celda de comparacin.

Evitando la formacin de latch en el reconocimiento de expresiones regulares.


En algunos de los reconocedores de expresiones regulares se presentan problemas debido a que se producen
latches o pestillos esto es una consecuencia que se da debido a la interaccin entre celular o celdas en el
compilador lo cual altera el correcto funcionamiento del reconocedor.
Por ello la idea es realizar una transformacin que elimine la expresin que ocasiona la aparicin del latch o
pestillo , a diferencia de las soluciones anterior que agrandaban los reconocedores y alteraban la velocidad
en la que trabajaba el reconocedor.

Una de las principales aplicaciones de los hermanos Deitel, son las expresiones regulares que facilitan la
construccin de un compilador.
A menudo se utiliza una expresin regular larga y compleja para validar la sintaxis de un programa. Si el cdigo
del programa no concuerda con la expresin regular, el compilador sabe que hay un error de sintaxis dentro
del cdigo.
Generalmente, convierten la expresin regular a un autmata finito no determinista y despus construyen el
autmata finito determinista.
Otra aplicacin del mismo libro es en los editores de texto. Tambin encontramos a las expresiones regulares
en la biologa molecular. Tambin hay esfuerzos importantes para tratar de representar cadenas como
generadas por expresiones regulares o por lenguajes regulares.

Conclusin
En una operacin normal de bsqueda y reemplazo es necesario proporcionar el texto exacto para que
coincida con los resultados deseados. Aunque esta tcnica puede ser adecuada para tareas de bsqueda y
reemplazo sencillas de texto esttico, carece de flexibilidad y hace cuando menos difcil, si no imposible, la
bsqueda de texto dinmico.
Con las expresiones regulares, se puede:

Comprobar si existe un modelo dentro de una cadena.


Por ejemplo, puede probar una cadena de entrada para ver si un modelo de nmero de
telfono o de nmero de tarjeta de crdito aparece dentro de la cadena. Esto se denomina
validacin de datos.

Reemplazar texto.
Puede utilizar una expresin regular para identificar el texto especfico de un documento y
quitarlo o reemplazarlo con otro texto.

Extraer una subcadena de una cadena en funcin de la coincidencia del modelo.


Puede buscar texto especfico dentro de un documento o campo de entrada.

Por ejemplo, si necesita buscar en un sitio Web, quite el material obsoleto y reemplace alguna de las etiquetas
de formato HTML. En este caso, puede utilizar una expresin regular para determinar si el material de las
etiquetas de formato HTML aparece en cada archivo. Este proceso reduce la lista de archivos afectados a los
archivos que contengan el material de destino que se desea quitar o cambiar. A continuacin, puede utilizar
una expresin regular para quitar el material obsoleto. Por ltimo, puede utilizar una expresin regular para
buscar y reemplazar las etiquetas.
Una expresin regular tambin es til en un lenguaje como JScript o C, que no se distinguen por su capacidad
de controlar cadenas.

Referencias bibliogrficas

Hopcroft John E., Introduccin a la Teora de Autmatas, Lenguajes y Computacin, 2da ed, Ed. Addison
Wesley, 2004.
Kenneth C. Louden. (2004). Construccin de compiladores: principios y prctica. Mxico: Thomson.
Floria, D.. (2014). Lenguajes y Expresiones Regulares. Septiembre, 2016, de SlidePlayer Sitio web:
http://slideplayer.es/slide/141462/
Labastida,
Ma.
(2013).
Anlisis
Lxico.
Septiembre.
2016,
http://ingenieria.uatx.mx/labastida/files/2013/06/An%C3%A1lisis-l%C3%A9xico.pdf

de

Sitio

web:

10

S-ar putea să vă placă și