Está en la página 1de 18

|pro

Profesor: Edgar Gustavo Ortz Lpez

APLICACIN DE LAS EXPRESIONES


REGULARES (ER)

INGENIERA EN SISTEMAS
COMPUTACIONALES

Lenguajes y Autmatas [SCB-1015]

LENGUAJES Y AUTOMATAS I
APLICASIN DE LAS
EXPRESIONES REGULARES
Alumnos:
Jos Luis Morales Velzquez No. Control 117o1136
Donato Aquino Barrios No. Control 117o1076

INTRODUCCIN............................................................................................................................3

DESARROLLO................................................................................................................................4

EJEMPLOS DE APLICACIN.......................................................................................................8

CONCLUSIN...............................................................................................................................16

Fecha: 14/02/2015

Pgina 2

Lenguajes y Autmatas [SCB-1015]

BIBLIOGRAFA............................................................................................................................16

INTRODUCCIN
Las expresiones regulares son un sistema cmodo, rpido y potente (una vez se domina) de realizar un filtrado sobre
un determinado caso, y obtener un grupo ms reducido y especfico, excluyendo los resultados que no coincidan con
el patrn dado.
Siendo ms tcnicos, con ayuda de un modelo matemtico, llamado DFA (Autmata Finito Determinista) se puede
observar cmo se aceptaran las cadenas que casaran con la expresin regular equivalente abc*.

Partiendo del estado de arranque q0, podemos transitar al estado q1 con el smbolo a y transitar al estado q2 con el
smbolo b para llegar a un estado de aceptacin (doble trazo) e incluso seguir transitando indefinidamente con el
simbolo c, lo que demostrara que las cadena ab, abc, abcc... entraran dentro de las cadenas que acepta.
Una ER o Expresin Regular es un equivalente algebraico para un autmata.

Utilizado en muchos lugares como un lenguaje para describir patrones en texto que son sencillos pero muy
tiles.

Pueden definir exactamente los mismos lenguajes que los autmatas pueden describir: Lenguajes regulares.

Ofrecen algo que los autmatas no: Manera declarativa de expresar las cadenas que queremos aceptar.

Fecha: 14/02/2015

Pgina 3

Lenguajes y Autmatas [SCB-1015]

Dado un alfabeto Dado un alfabeto , una expresin regular sobre expresin regular sobre se define de forma
recursiva:

ER primitivas: , , {a | a }

Si y son ER, entonces son tambin ER: + (unin), (concatenacin), * (cierre), ().

No existen otras reglas para la construccin de ER sobre .

DESARROLLO
La potencia de las expresiones regulares es increblemente amplia. Suele ser especialmente til para
los programadores y manejadores de bases de datos (PHP,Perl, Java, .NET...), que pueden desarrollar y reconocer
patrones complejos de una forma sencilla.
Las expresiones regulares tienen mltiples utilidades, no solo se utilizan en los lenguajes de programacin sino tambin
en el mbito de la lingstica de corpus y de la lingstica computacional.
Si no eres programador tambin puedes hacer uso de las expresiones regulares para multitud de tareas. Muchas
aplicaciones utilizan expresiones regulares y seguro que no tenas ni una idea, por ejemplo:
Bloc de notas: Aunque no el base de Windows, sino notepad2. Especialmente til para reemplazar cadenas en textos en
los que estn repetidos varias veces (ficheros HTML, de texto etc.).
Comandos UNIX: Comandos de administrador de sistemas como grep, egrep, awk, sed y tantos otros. Recuerda que si
usas Windows, puedes utilizar muchos de estos comandos con UNIXUtils.
Renombrado masivo: Existen multitud de programas para renombrar ficheros utilizando expresiones regulares
como RegEx Renamer.
Emule: El mismsimo emule permite realizar busquedas con un grupo reducido de expresiones regulares, por ejemplo si
queremos buscar canciones que empiecen por Spectrum (para buscar de este grupo musical), podemos
escribir ^Spectrum y especificar ficheros de audio, evitando asi canciones que tengan el nombre Spectrum en su ttulo.
Fecha: 14/02/2015

Pgina 4

Lenguajes y Autmatas [SCB-1015]

Adems en Preferencias / Opciones adicionales / Mostrar ms controles (Controles de modo avanzado) puedes
activar las expresiones regulares para filtrar categoras en las pestaas de trfico.
Renombrado de MP3: Con Quick File Rename, se mezcla la potencia de las expresiones regulares a la capacidad de
utilizar los tag ID3 para renombrar tus archivos.

Las expresiones regulares denotan lenguajes.


Por ejemplo, la expresin regular: 01* + 10* denota todas las cadenas que son o un 0 seguido de cualquier cantidad 1's o
un 1 seguida de cualquier cantidad de 0's.
Las operaciones que realizan los lenguajes son:
Unin o Alternativa: Consideremos dos lenguajes diferentes definidos sobre el mismo alfabeto L1 W() y L2 W().
Se denomina unin de ambos lenguajes al lenguaje formado por las palabras de ambos lenguajes:

L1 U L2={ x | x L1 x L2}

Concatenacin: Consideremos dos lenguajes definidos sobre el mismo alfabeto, L1 y L2. La concatenacin o producto
de estos lenguajes es el lenguaje L1 L2= { xy / x L1 y x L2} Las palabras de este lenguaje estarn formadas al
concatenar cada una palabra del primero de los lenguajes con otra del segundo.
La concatenacin de lenguajes con el lenguaje vaci es L = L =
Potencia de un lenguaje: Se define la potencia i-sima de un lenguaje a la operacin de concatenarlo consigo mismo i
veces.
Li= LLL ....L

Fecha: 14/02/2015

Pgina 5

|------------|
i

Lenguajes y Autmatas [SCB-1015]

Clausura positiva de un lenguaje: Se define la clausura positiva de un lenguaje L:

L+=ULi
i=1
Lenguaje obtenido uniendo el lenguaje con todas sus potencias posibles excepto L. Si L no contiene la palabra vaca, la
clausura positiva tampoco
Cierre o Clausura de un lenguaje: Se define el cierre o clausura de un lenguaje L como :

L* = U Li
i=0
Lenguaje obtenido uniendo el lenguaje con todas sus potencias posibles, incluso L. Todas las clausuras contienen la
palabra vaca.
Existen tres operaciones bsicas que se pueden realizar sobre las ER:

Seleccin 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, tambin se dice que r | s , es la unin de
los lenguajes de r y s y lo podemos definir: L( r | s ) = L( r ) U L( s ). Esta operacin se puede extender a ms
de dos ER.

Concatenacin: Se indica con la yuxtaposicin de las ER. Si r y s son ER, entonces rs es una ER que define
a cualquier cadena que concuerde con la concatenacin de r y s , esta operacin la podemos definir: L(rs) =
L(r)L(s).Esta operacin se puede extender a ms de dos ER.

Repeticin o Cerradura: Tambin 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

Fecha: 14/02/2015

Pgina 6

Lenguajes y Autmatas [SCB-1015]

la concatenacin repetida de r en n veces, o sea que lo podemos definir como: L(r*) = L(r)*o tambin lo
podemos definir como la unin infinita de conjuntos r :r* n = r 0 r 1 r 2...r n.

Para los programadores o aquellas personas asociadas a mundo de la tecnologa, 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

Fecha: 14/02/2015

Pgina 7

Lenguajes y Autmatas [SCB-1015]

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.
En GNU, no se distinguen expresiones regulares bsicas de extendidas; los comandos aceptan todas las
expresiones regulares. En ese caso, como siempre se estn usando extendidas, los metacaracteres ?, +, {, |, (, y )
deben ser escapados cuando se quieren usar como caracteres normales, escribiendo \?, \+, \{, \|, \(, y \).

EJEMPLOS DE APLICACIN
Ejemplo 1: Bsqueda de imgenes en la PC.
Si tenemos varias carpetas, con miles y miles de imgenes con distintos nombres y formatos (JPG, PNG, GIF...) y nos interesa separar todas las
fotografas en las que aparece Ramn (ramon_borracho.jpg, ramon45.jpg, ramon_de_viaje.bmp, etc.).
La primera opcin que se nos ocurre es hacerlo de forma manual, cosa que nos consumira demasiado tiempo si se trata de ms de, por
ejemplo, 5.000 fotografas.
La siguiente opcin es utilizar los comodines (wildcards): Utilizando los comodines * (cualquier conjunto de caracteres) y ? (cualquier carcter,
slo uno), podemos obtener ms precisin de una forma sencilla: ramon*.jpg, ramon*.???, *ramon*.*, ...). En estos casos, la potencia de los
comodines suele ser suficiente.
Sin embargo, el mtodo anterior es limitado, puesto que, si quisieramos detectar fotografas con nombres como ramn.jpg, r4m0n.jpg,
raaamoncito.jpeg pero no incluir romn.jpg, romn.jpg y slo incluir imagenes con formato jpg no habra forma de discriminar entre ambas
opciones, salvo utilizando una expresin regular: ^.*ra|4m(o|0|)n.*\.jpg$.

Fecha: 14/02/2015

Pgina 8

Ejemplo 2: Para describir el lxico de un lenguaje de programacin

Lenguajes y Autmatas [SCB-1015]

Por ejemplo para el lenguaje C++:


Palabras Claves = main + if + else + while + do + switch + case +...
Dgitos = 1+2+3+4+5+6+7+8+9
Nmero Entero Sin Signo = 0+Dgitos.(Dgitos+0)*
Letra = a + b + c + d+... + z
Identificador = (Letra+ _) . (Letra+ _ + Dgitos+0)*

Ejemplo 3: Expresiones Regulares en el lenguaje Ingls.


Forma incorrecta: * I think that to buy weapons
Forma correcta: I think that buying weapons
La expresin regular utilizada para detectar el error es: \sthink\sthat\sto\s
Este es un error frecuente cometido por hispanohablantes. El verbo think seguido de una oracin subordinada suele ir acompaado por un vervo
en gerundio y no por un verbo en infinitivo como to. Es un ejemplo que slo encuentra una secuencia, es decir, en esta ocacin la expresin
regular descrita anteriormente detectar nicamente nicamente una secuencia en la que aparecern las palabras indicadas. Sin embargo, se
trata de un ejemplo muy til por tratarse de una confusin muy ferecuente, y su inclusin en el corrector gramatical resulta muy pertinente.

Ejemplo 4: Coincidencia de palabras.

Coincidencia solo con la palabra completa


Fecha: 14/02/2015

Pgina 9

Lenguajes y Autmatas [SCB-1015]

Ejemplo de

Coincidencia con la palabra intil; no coincide con til, tilmente, utilidad, etc.

uso
Ejemplo de

(\W|^)intil(\W|$)

regex

Notas

\W coincide con cualquier carcter que no sea una letra, un nmero o un guin bajo. Impide
que la expresin regex coincida con letras que precedan o que sigan a la palabra.

Importante: al crear una expresin regex para que coincida con palabras completas, debes incluir la
clase de carcter \W para evitar que se filtren mensajes legtimos.

^ coincide con el inicio de una nueva lnea. Permite a la expresin regex coincidir con la
palabra si aparece al principio de la lnea, sin ningn carcter que le preceda.

$ coincide con el final de una lnea. Permite a la expresin regex coincidir con la palabra si
aparece al final de la lnea, sin ningn carcter que le siga.

Coincidencia solo con la frase exacta


Ejemplo de

Coincidencia con la frase consejos mercados.

uso
Ejemplos de

Ejemplo 1: (\W|^)consejos\mercados(\W|$)

regex
Ejemplo 2:(\W|^)consejos\s{0,3}mercados(\W|$)
Ejemplo 3: (\W|^)consejos\s{0,3}mercado(s){0,1}(\W|$)
Notas

\W coincide con cualquier carcter que no sea una letra, un nmero o un guin bajo. Impide
que la expresin regex coincida con caracteres que precedan o que sigan a la frase.

Fecha: 14/02/2015

Pgina 10

Lenguajes y Autmatas [SCB-1015]

En el ejemplo 2, \s coincide con un carcter de espacio y {0,3} indica que pueden aparecer de
cero a tres espacios entre las palabras consejos y mercado.

^ coincide con el inicio de una nueva lnea. Permite a la expresin regex coincidir con la frase
si aparece al principio de la lnea, sin ningn carcter que le preceda.

$ coincide con el final de una lnea. Permite a la expresin regex coincidir con la frase si
aparece al final de la lnea, sin ningn carcter que le siga.

En el ejemplo 3, (s) coincide con la letra s, y {0,1} indica que la letra puede aparecer una vez
oninguna despus del trmino "mercado". Por lo tanto, la expresin regex coincide
con consejos de mercado y con consejos de mercados. Si lo prefieres, puedes utilizar el
carcter ? en lugar de {0,1}.

Coincidencia con la palabra o con la frase de una lista


Ejemplo de
uso

Ejemplos de

Coincidencia con cualquier palabra o frase de la lista siguiente:

tontera

maldito

caray

caramba

madre ma

ostras

(\W|^)(tontera|maldito|caray|caramba|madre\sma|ostras)(\W|$)

regex

Fecha: 14/02/2015

Pgina 11

Lenguajes y Autmatas [SCB-1015]

Notas

(...) agrupa todas las palabras de modo que la clase de carcter \W afecta a todas las palabras
del parntesis.

\W coincide con cualquier carcter que no sea una letra, un nmero o un guin bajn. Impide
que la expresin regex coincida con caracteres que precedan o sigan a las palabras o a las frases
de la lista.

^ coincide con el inicio de una nueva lnea. Permite a la expresin regex coincidir con la
palabra si aparece al principio de la lnea, sin ningn carcter que le preceda.

$ coincide con el final de una lnea. Permite a la expresin regex coincidir con la palabra si
aparece al final de la lnea, sin ningn carcter que le siga.

| indica la disyuntiva o, para que la expresin regex coincida con cualquiera de las palabras
de la lista.

\s coincide con un carcter de espacio. Utilzalo para separar las palabras en una frase.

Coincidencia de una palabra con distintas grafas o con caracteres especiales


Ejemplo de

Coincidencia con la palabra "viagra" y con algunas de las alteraciones que utilizan los emisores de

uso

spam, por ejemplo:

Fecha: 14/02/2015

vi@gra

v1agra

v1@gra

v!@gr@
Pgina 12

Lenguajes y Autmatas [SCB-1015]

Ejemplo de

v[i!1][a@]gr[a@]

regex

Notas

\W no se incluye, por lo que pueden aparecer otros caracteres antes o despus de las
variaciones del trmino viagra. Por ejemplo, la expresin regex coincide igualmente
con viagra en el texto siguiente:

viagra!! o ***viagra***

[i!1] coincide con los caracteres i, !, o 1 en la segunda posicin de carcter de la palabra.

Coincidencia de una palabra con caracteres de variables


Ejemplo de

Coincidencia con cualquier URL que contenga el texto correonoadmitido.com, por ejemplo:

uso

correonoadmitido1.com

correonoadmitido12.com

correonoadmitido3.com

correonoadmitido.basura.com

correonoadmitido-basura.com

correonoadmitido(\w.+%\-){0,25}\.com
Ejemplo de
regex
Notas

[\w.+\-] coincide con cualquier carcter (a-z, A-Z, 0-9 o guin bajo), una coma, un signo ms, un
signo de porcentaje o un guin. Son los nicos caracteres vlidos en una URL. Ten en cuenta que el
carcter \- (que indica un guin) debe ir al final de la lista de caracteres dentro de los corchetes.

Fecha: 14/02/2015

Pgina 13

Lenguajes y Autmatas [SCB-1015]

{0,25} indica que, en el conjunto de caracteres anterior, puede haber entre 0 y 25 caracteres
despus del texto correonoadmitido. La configuracin de correo relacionada con el
cumplimiento del contenido admite la coincidencia de hasta 25 caracteres para cada conjunto de
caracteres en una expresin regular.

El carcter \ antes del guin y del punto acta de carcter de escape, es decir, indica que el
guin y el punto no son caracteres especiales regex por s mismos. Ten en cuenta que no es
necesario incluir un carcter de escape para el punto dentro de los corchetes.

Coincidencia con cualquier direccin de correo electrnico de un determinado dominio


Ejemplo de

Coincidencia con cualquier direccin de correo electrnico de los

uso

dominios yahoo.com, hotmail.com ygmail.com.

Ejemplo de

(\W|^)[\w.+\-]{0,25}@(yahoo|hotmail|gmail)\.com(\W|$)

regex
Notas

\W coincide con cualquier carcter que no sea una letra, un nmero o un guin baj. Impide que
la expresin regex coincida con caracteres que precedan o que sigan a la direccin de correo
electrnico.

^ coincide con el inicio de una nueva lnea. Permite a la expresin regex coincidir con la
direccin si aparece al principio de la lnea, sin ningn carcter que le preceda.

$ coincide con el final de una lnea. Permite a la expresin regex coincidir con la direccin si
aparece al final de la lnea, sin ningn carcter que le siga.

[\w.\-] coincide con cualquier carcter (a-z, A-Z, 0-9 o guin bajo), una punto, un signo ms o un
guin. Estos son los caracteres vlidos ms utilizados en la primera parte de una direccin de
correo electrnico. Ten en cuenta que el carcter \- (que indica un guin) debe ir al final de la lista
de caracteres dentro de los corchetes.

Fecha: 14/02/2015

Pgina 14

Lenguajes y Autmatas [SCB-1015]

El carcter \ antes del guin y del punto acta de carcter de escape, es decir, indica que el
guin y el punto no son caracteres especiales regex por s mismos. Ten en cuenta que no es
necesario incluir un carcter de escape para el punto dentro de los corchetes.

{0,25} indica que, en el conjunto de caracteres anterior, puede haber entre 0 y 25 caracteres
antes del smbolo @. La configuracin de correo relacionada con el cumplimiento del contenido
admite la coincidencia de hasta 25 caracteres para cada conjunto de caracteres en una expresin
regular.

El formato (...) agrupa los dominios, mientras que el carcter | que los separa indica la
disyuntiva o.

Coincidencia con cualquier direccin IP de un intervalo de direcciones


Ejemplo de

Coincidencia con cualquier direccin IP que se incluya en el intervalo 192.168.1.0 - 192.168.1.255.

uso
Ejemplos de

Ejemplo 1: 192\.168\.1\.

regex

Ejemplo 2: 192\.168\.1\.\d{1,3}

Notas

El carcter \ antes de cada punto sirve de carcter de escape, es decir, indica que el punto
no es un carcter especial regex por s mismo.

En el ejemplo 1, no se incluye ningn carcter despus del ltimo punto, por lo que la
expresin regex coincide con cualquier direccin IP que empiece por 192.168.1.,
independientemente del nmero que le siga.

En el ejemplo 2, \d coincide con cualquier cifra entre el 0 y el 9 despus del ltimo punto, y
{1,3} indica que pueden aparecer entre uno y tres nmeros despus del ltimo punto. En este
caso, la expresin regex coincide con cualquier direccin IP completa que empiece
por 192.168.1.. Ten en cuenta que esta expresin tambin coincide con direcciones IP no

Fecha: 14/02/2015

Pgina 15

Lenguajes y Autmatas [SCB-1015]

vlidas, por ejemplo,192.168.1.999.


Coincidencia con un formato alfanumrico
Ejemplo de

Coincidencia con los nmeros de pedido de la empresa. Hay varios formatos posibles, por ejemplo:

uso

Ejemplo de

PO nn-nnnnn

PO-nn-nnnn

PO# nn nnnn

PO#nn-nnnn

PO nnnnnn

(\W|^)po[#\-]{0,1}\s{0,1}\d{2}[\s-]{0,1}\d{4}(\W|$)

regex
Notas

\W coincide con cualquier carcter que no sea una letra, un nmero o un guin bajo. Impide
que la expresin regex coincida con caracteres que precedan o que sigan al nmero.

^ coincide con el inicio de una nueva lnea. Permite a la expresin regex coincidir con el
nmero si aparece al principio de la lnea, sin ningn carcter que le preceda.

$ coincide con el final de una lnea. Permite a la expresin regex coincidir con el nmero si
aparece al final de la lnea, sin ningn carcter que le siga.

[#\-] coincide con el smbolo de almohadilla o con un guin despus de las letras "po", mientras
que {0,1} indica que uno de esos caracteres puede aparecer una vez o ninguna. Ten en cuenta
que el carcter \- (que indica un guin) debe ir al final de la lista de caracteres dentro de los
corchetes.

Fecha: 14/02/2015

\s coincide con un espacio, y {0,1} indica que puede aparecer un espacio una vez o ninguna.

\d coincide con cualquier cifra del 0 al 9, y {2} indica que deben aparecer exactamente 2 dgitos
Pgina 16

Lenguajes y Autmatas [SCB-1015]

en esta posicin en el nmero.

CONCLUSIN
Como han podido observar una expresin regular es una forma de representar a los lenguajes regulares (finitos o
infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje. No solo los programadores
utilizan las Expresiones Regulares, tambin aquellas personas que no lo son hacen el uso de estas aunque no se estn
dando cuenta, todo esto debido a que las ER son un sistema cmodo, rpido y potente de realizar un filtrado sobre un
determinado caso, y obtener un grupo ms reducido y especfico, excluyendo los resultados que no coincidan con el
patrn dado, lo cual nos evita las mltiples operaciones y/o actividades que se tienen que realizar para llegar al resultado.
Especficamente, las expresiones regulares se construyen utilizando los operadores unin, concatenacin y clausura de
Kleene.

BIBLIOGRAFA
Friedl, J.E.F. (2006). 3er. Ed. Mastering Regular Expressions. OReilly; USA.
Fecha: 14/02/2015

Pgina 17

Kernighan-Pike[1987], Coffin[1989]

Lenguajes y Autmatas [SCB-1015]

https://msdn.microsoft.com/es-es/library/az24scfc%28v=vs.110%29.aspx
http://www.ccg.unam.mx/~contrera/bioinfoPerl/node18.html
https://support.google.com/analytics/answer/1034324?hl=es
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular

Fecha: 14/02/2015

Pgina 18

También podría gustarte