Er PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Expresiones Regulares

Introducción
La expresiones regulares (ER) son una forma de representar cadenas de caracteres. Se
usan en operaciones de comparación. Las expresiones regulares permiten realizar
búsquedas o sustituciones de gran complejidad.
Las búsquedas en el editor vi con los comandos / y ? aceptan expresiones regulares; esto
hace las búsquedas mucho más potentes y flexibles.
Las expresiones regulares son aceptadas en otros editores y en muchos comandos con
algunas diferencias de sintaxis.
Una expresión regular es un patrón que describe un conjunto de cadenas de caracteres. Por
ejemplo, el patrón aba*.txt representa el conjunto de cadenas de caracteres que comienzan
con aba, contienen cualquier otro grupo de caracteres, luego un punto, y finalmente la cadena
txt. El símbolo * se interpreta como "0, 1 o más caracteres cualesquiera".

Las expresiones regulares se construyen como las expresiones aritméticas, usando


operadores para combinar expresiones más pequeñas. Analizaremos esos operadores y las
reglas de construcción de expresiones regulares, atendiendo siempre al conjunto de cadenas
que representa cada patrón.

Metacaracteres
La construcción de expresiones regulares depende de la asignación de significado especial a
algunos caracteres. En el patrón aba*.txt el caracter * no vale por sí mismo, como el
caracter asterisco, sino que indica un "conjunto de caracteres cualesquiera". Asimismo, el
caracter ? no se interpreta como el signo de interrogación sino que representa "un caracter
cualquiera y uno solo". Estos caracteres a los que se asigna significado especial se
denominan "metacaracteres".
El conjunto de metacaracteres para expresiones regulares es el siguiente:
\ ^ $ . [ ] { } | ( ) * + ?

Estos caracteres, en una expresión regular, son interpretados en su significado especial y no


como los caracteres que normalmente representan. Una búsqueda que implique alguno de
estos caracteres obligará a "escaparlo" de la interpretación mediante \ (diagonal invertida),
como se hace para evitar la interpretación por el shell de los metacaracteres del shell. En una
expresión regular, el caracter ? representa "un caracter cualquiera"; si escribimos \?, estamos
representando el caracter ? tal cual, sin significado adicional.

Expresiones Regulares Básicas


Una expresión regular determina un conjunto de cadenas de caracteres. Un miembro de este
conjunto de cadenas se dice que describe o satisface la expresión regular.
ERs de un sólo caracter
Las expresiones regulares se componen de expresiones regulares elementales que
representan un único caracter:
Exp.Reg. Significado

c Cualquier caracter ordinario c

. (punto) Cualquier caracter excepto nueva línea

[abc]
Caracter que es a, b o c
[^abc] Caracter que no sea a, b o c

Cualquier caracter en el intervalo indicado. El signo - indica un intervalo de


[0-9][a-z][A-Z]
caracteres consecutivos.

Los corchetes [] delimitan listas de caracteres individuales. Muchos metacaracteres pierden


su significado si están dentro de listas: los caracteres especiales . * [ \ valen por sí dentro
de []. Para incluir un caracter ] en una lista, se debe colocarl al principio; para incluir un ^ se
debe colocar en cualquier lugar menos al principio; para incluir un – se debe colocar al final.
Dentro de los conjuntos de caracteres individuales, se reconocen las siguientes categorías:
[:alnum:] alfanuméricos
[:alpha:] alfabéticos
[:cntrl:] de control
[:digit:] dígitos
[:graph:] gráficos
[:lower:] minúsculas
[:print:] imprimibles
[:punct:] de puntuación
[:space:] espacios
[:upper:] mayúsculas
[:xdigit:] dígitos hexadecimales

Por ejemplo, [[:alnum:]] significa [0-9A-Za-z], pero esta última expresión depende de la
secuencia de codificación ASCII, en cambio la primera es portable, no pierde su significado
bajo distintas codificaciones. En los nombres de categorías, los paréntesis rectos forman
parte del nombre de la categoría, no pueden ser omitidos.

Construcción de Expresiones Regulares


Una expresión regular se contruye con uno o más operadores que indican, cada uno, el
caracter a buscar. Los operadores más comunes y aceptados son los siguientes:
Exp.Reg. Significado

c un caracter no especial concuerda consigo mismo

\c
elimina significado especial de un caracter c; el \ escapa el significado
especial

^ indica ubicado al comienzo de la línea (cadena nula al principio de línea)

$ indica ubicado al final de la línea (cadena nula al final de línea)

. (punto) un caracter individual cualquiera

[...]
uno cualquiera de los caracteres ...; acepta intervalos del tipo a-z, 0-9, A-Z
(lista)

[^...] un caracter distinto de ... ; acepta intervalos del tipo a-z, 0-9, A-Z

r* 0, 1 o más ocurrencias de la ER r (repetición)

r1r2 la ER r1 seguida de la ER r2 (concatenación)

Ejemplos de Expresiones Regulares Básicas


Como todo en esta vida las expresiones regulares se aprenden mejor con los ejemplos y el
uso. A continuación de detallan algunos ejemplos esperando que con esto se aclaren dudas.
Exp.Reg. Significado

a.b axb aab abb aSb a#b ...

a..b axxb aaab abbb a4$b ...

[abc] a b c (cadenas de un caracter)

[aA] a A (cadenas de un caracter)

[aA][bB] ab Ab aB AB (cadenas de dos caracteres)

[0123456789] 0123456789

[0-9] 0123456789

[A-Za-z] A B C ... Z a b c ... z

[0-9][0-9][0-9] 000 001 .. 009 010 .. 019 100 .. 999

[0-9]* cadena_vacía 0 1 9 00 99 123 456 999 9999 ...


[0-9][0-9]* 0 1 9 00 99 123 456 999 9999 99999 99999999 ...

^.*$ cualquier línea completa

En el editor vi, las expresiones regulares permiten realizar búsquedas tales como:
/^Desde

busca líneas que empiecen con la cadena Desde


/final$

busca líneas que termine con la cadena final


/\$25

busca líneas que contengan $25; \ escapa el $

Expresiones Regulares Extendidas


Algunos comandos, como egrep o grep -E, aceptan expresiones regulares extendidas, que
comprenden las expresiones regulares básicas más algunos operadores que permiten
construcciones más complejas. Los operadores incorporados son los siguientes:

Exp.Reg.Ext. Significado

r+ 1 o más ocurrencias de la ER r

r? 0 o una ocurrencia de la ER r, y no más

r{n} n ocurrencias de la ER r

r{n,} n o más ocurrencias de la ER r

r{,m} 0 o a lo sumo m ocurrencias de la ER r

r{n,m} n o más ocurrencias de la ER r, pero a lo sumo m

r1|r2 la ER r1 o la ER r2 (alternativa)

(r) ER anidada

"r" evita que los caracteres de la ER r sean interpretados por el shell

La repetición tiene precedencia sobre la concatenación; la concatenación tiene precedencia


sobre la alternativa. Una expresión puede encerrarse entre paréntesis para ser evaluada
primero.

Ejemplos de Expresiones Regulares Extendidas


Exp.Reg.Ext. Significado

[0-9]+ 0 1 9 00 99 123 456 999 9999 99999 99999999 ..

[0-9]? cadena_vacía 0 1 2 .. 9

^a|b a b

(ab)* cadena_vacía ab abab ababab ...

^[0-9]?b b 0b 1b 2b .. 9b

([0-9]+ab)* cadena_vacía 1234ab 9ab9ab9ab 9876543210ab 99ab99ab ...

Expresiones regulares en GNU.


En GNU, no se distinguen expresiones regulares básicas de extendidas; los comandos
aceptan todas las expresiones regulares. En ese caso, como siempre se están usando
extendidas, los metacaracteres ?, +, {, |, (, y ) deben ser escapados cuando se quieren
usar como caracteres normales, escribiendo \?, \+, \{, \|, \(, y \) respectivamente.

También podría gustarte