Sei sulla pagina 1di 5

Meta caracteres de expresiones regulares Existen ciertos caracteres que tienen un significado especfico dentro de una expresin regular.

Estos caracteres especiales, o meta caracteres, se pueden aplicar a definiciones de carcter para especificar con qu caracteres se concuerda, cuantificadores para especificar el modelo de repeticin de los caracteres y tambin anclajes para especificar una posicin dentro de un texto. Estos caracteres, como hemos visto, se denominan meta caracteres porque tienen un significado que va ms all del smbolo que representa y tiene un comportamiento especial en una expresin regular: Definiciones de carcter Primeramente pasamos a la definicin de caracteres en una expresin regular. Vamos a detallar los meta caracteres que permiten especificar una plantilla que concuerde con un texto de unas caractersticas concretas. Dentro de las definiciones de caracteres podremos especificar caracteres genricos, rangos de caracteres, exclusin de caracteres, literales y otras caractersticas adicionales.

Meta carcter . () [] [-] [^ ] | // \

Significado Concuerda con cualquier carcter (salvo fin de lnea en modo multilnea) Subexpresin o grupo Conjunto de caracteres Rango de caracteres Excepto ese conjunto de caracteres Permite una alternativa para elegir entre dos expresiones Delimita una expresin regular Protege el siguiente meta carcter

Las expresiones permiten tambin especificar caracteres especiales no imprimibles:

Meta carcter Significado \a \e \cx \f \n \r \t \xhh \ddd pitido, el carcter BEL (07 en hexadecimal) escape (1B en hexadecimal) "control-x", donde x es el carcter correspondiente nueva pgina (0C hexadecimal) nueva lnea (0A hexadecimal) retorno de carro (0D hexadecimal) tabulador (09 hexadecimal) carcter con cdigo hh hexadecimal carcter con cdigo ddd en octal

Ejemplos:

Expresi Significado n /[a-z]/ /[A-Z]/ /[0-9]/ una letra minsculas. El "-" indica un rango, que en este caso comienza en "a" y termina en "z". una letras mayscula un dgito

/[,'!;:.?] un carcter de puntuacin / /[A-Zaz]/ una letra salvo acentuadas y

/[A-Zaz0-9]/ /[^a-z]/

una letra, salvo acentuadas y , o un dgito cualquier carcter salvo una letras minscula

/[^0-9]/ Cualquier carcter salvo un nmero. Clases Podemos especificar clases de caracteres segn varias sintaxis, POSIX, tradicional o Unicode. Segn la sintaxis de clases POSIX, podemos indicar [:clase:] donde clase puede ser alguna de las siguientes expresiones:

Clase [:alpha:]

Significado carcter alfabtico

[:alnum:] carcter alfanumrico [:ascii:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] carcter ascii espacio, incluye tabulador (tambin \s segn la sintaxis tradicional) carcter de control un dgito (tambin \d segn la sintaxis tradicional) carcter grfico letra minscula carcter imprimible carcter de puntuacin espacio (tambin \s segn la sintaxis tradicional)

[:upper:] letra mayscula [:word:] palabra (tambin \w segn la sintaxis tradicional)

[:xdigit:]

dgito hexadecimal

En la sintaxis tradicional, adems tenemos:

Metacarc Significado ter \D \S \w \W Literales Cualquier otro carcter especificado en una expresin regular se representa a s mismo. Por ejemplo, la expresin regular: /To:[ ]*[^(EN)]+(EN)mi dominio\.dom$/ cualquier carcter que no sea un dgito decimal (equivaente a [^:digit:]) cualquier carcter que no sea un espacio en blanco (euivalente a [^:blank:] cualquier carcter de de una palabra cualquier carcter que no sea de una "palabra"

consta de: dos literales :to: y (EN)mi dominio. dom (el "." va protegido). un anclaje, el $ que indica final de lnea dos conjuntos de caracteres [ ] que representa un espacio en blanco y [^(EN)] que indica todo lo que no sea (EN). los cuantificadores * que indica en este caso posibles espacios en blanco y + que indica repeticin de una o ms veces el carcter anterior, en este caso todo lo que no sea (EN). Los meta caracteres * y + se analizan con ms detalles en su apartado especfico. Meta carcter como literal

Cuando queramos utilizar un meta carcter como literal tendremos que protegerlo con una contra barra ("\"). Ya hemos visto varios ejemplos, como el caso de /midominio\.dom/. En este caso el carcter "." no tiene su valor propio de una expresin regular de ser cualquier carcter, sino que al ir protegido representa el . Un caso particular lo podemos encontrar si usamos expresiones regulares dentro de una shell, por ejemplo un script de shell. En este caso deberamos realizar en algunos casos una doble proteccin con la contra barra, una para protegerlo en shell y otra para protegerlo en la expresin regular. Por ejemplo: Si ponemos: A="La variable \$A est definida"

En realidad estamos almacenando, "La variable $A est definida". Evidentemente esta cadena como expresin regular no tiene el signo $ protegido. Si quisiramos almacenar "La variable \$A est definida" entonces deberamos poner: A="La variable \\\$A est definida"

Potrebbero piacerti anche