Documente Academic
Documente Profesional
Documente Cultură
Introduccin
Expresin regular, a menudo llamada tambin patrn, es una
expresin que describe un conjunto de cadenas sin enumerar
sus elementos.
Wikipedia
Expresin regular
Conjunto de caracteres y metacaracteres que definen reglas
sintcticas para la evaluacin de una cadena de texto
ab+
Metacaracteres
Metacaracteres
No se representan a ellos mismos
Cada uno tiene un significado especial
Algunos de los metacaracteres mas habituales son:
$ + * - ? [ ] .
En resumen
Son un mecanismo muy potente para procesar cadenas de
caracteres
Donde se utilizan
Principalmente en:
En comandos y bsquedas dentro de los sistemas operativos
Lenguajes de programacin
Aplicaciones Software (Word, Notepad, etc)
Expresiones regulares
Expresiones regulares
Jamie Zawinski ,
Responsable del Navegador Netscape 1.1
Contribuidor de proyectos Mozilla
Expresiones regulares
^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z]
(-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?
[A-Z])$
Expresin regular
Certificado de identificacin Fisca Espaa
ab
abecedario
taza
tabaco
Expresin regular
Conjunto de caracteres y metacaracteres que definen reglas
sintcticas para la evaluacin de una de una cadena de texto
ab+
Metacaracteres
Representaciones de caracteres
Cualquier carcter alfa numrico
Letras y nmeros (@, #, )
Los metacaracteres especiales necesitan ser precedidos de \ por
ejemplo \. , \* , \- , \( , \), \\, \^ \$
Ejemplos:
Cadenas: {"Aplastar","Haragn","Encargado","Seleccin"}
Expresiones: a , b , e
Cadenas: { "Apla.star", "Hara.gn", "Enca*rgado", "Selec-cin" };
Expresiones: \. , \*, -
Representaciones de caracteres
Cualquier carcter alfa numrico
Letras y nmeros (@, #, )
Los caracteres que no sean letras y nmeros necesitan ser precedidos
de \ por ejemplo \. , \* , \- , \( , \)
Ejemplos:
Cadenas: {"Aplastar","Haragn","Encargado","Seleccin"}
Expresiones: a , b , e
Cadenas: { "Apla.star", "Hara.gn", "Enca*rgado", "Selec+cin" };
Expresiones: \. , \*, \+
Representaciones de caracteres
\d Representa cualquier digito de 0-9
\D Representa lo contrario a \d
Ejemplos:
Cadenas: { "122", "Perseguir", "Antena23", "Aceituna" }
Expresiones: \d , \D
Representaciones de caracteres
\w Representa cualquier letra o digito (incluso letras
especiales o acentuadas como , , etc)
No comprende los espacios en blanco ni el resto de caracteres
especiales como , . @, #, $, %, C , ( , (espacio), etc
\W Representa lo contrario a \w
Ejemplos:
Cadenas: { "122", "", "#", " ", "antena23", "aceituna" };
Expresiones: \w , \W
Representaciones de caracteres
\s Representa cualquier espacio en blanco
No es buena idea utilizar los espacios para delimitar palabras,
existen otros mecanismos
\S Representa lo contrario a \s
Ejemplos:
Cadenas: { "Alrededor", "El disco", "Firma", "El examen", "Castilla la
mancha" }
Expresiones: \s , El\s
Representaciones de caracteres
Ejemplos:
Cadenas: { " 1 ", "2 ", " 3", " 4a ", " b "}
Expresiones: \s\d\s , \s4a,\s\w\s
Otros elementos
\t Tabulador (ASCII 9)
\f Salto de pgina
\n Salto de lnea
\O Carcter nulo
Conjuntos
Elementos de los conjuntos
[ ]: inicio y fin de conjunto
- : rango dentro del conjunto
^ : negacin del conjunto
[ ] Conjuntos
[a-z] de la a la z
[A-Z] de la A a la Z
[0-9] del 0 al 9
[a-z0-9] de la a a la z y del 0 al 9
[a-z0-9_] de la a a la z y del 0 al 9 y _
Conjuntos
[ ] Conjuntos
[a-zA-Z] de la a a la z y de la A a la Z.
[opk] Cualquiera de los caracteres o, p, k,
[oe] Cualquier de los caracteres o, e
[a-e] Cualquier letra entre a y e (es decir a, b, c, e)
[^a] Que no este el carcter a
[^a-e] Que no aparezcan letras entre a y e
Ejemplos:
Cadenas: { "Cerca", "Presentar", "ensalada", "141", "Cercado13" }
Expresiones: [a-z], [0-9], [e1] , [a-e]
Conjuntos
Ejemplos:
Cadenas: { "Chicos", "Chica", "Chico", "Chimo", "Chino" };
Expresiones: Chic[oa], Chic[oa]s, Chi[a-z]o, [^0-9]
Repeticiones
{N} significa que la expresin se repite exactamente n veces
{N, } significa la expresin se repite N o mas veces.
{X, Y} significa la expresin se repite un mnimo de X veces y un
mximo de Y.
Ejemplos:
Cadenas: { "www.Agrupar.com", "water", "windows", "Botnico"}
Expresiones: w{3} , w{1,} , w{2,3}
Cadenas: { "a1", "bb2334", "123", "b2222", "e333333" }
Expresiones: [a-z]{1,3}[0-9]{3,4}, \D{1,2}\d{4}
Repeticiones
Mximo y mnimo
Nmero de coincidencias Regex.Matches:
Repeticiones
Ejemplos:
Cadenas: { "1221", "3614", "441244", "97" }
Expresiones: [12]{2,4},\d{3}4
Agrupaciones
( ) Sirven para agrupar expresiones regulares
(ab) carcter ab agrupado
Ejemplos:
Cadenas: { "Acceso", "Espeso", "El Tractor", "Cdigo fuente" }
Expresiones: (so){2}
Cadenas: { "3a3a3a a3a3", "D5D5D5D5D z1z1", "3a3a3a a3a3",
"3a3a3a a3a3a" }
Expresiones: (\d\D){3}\s{1,2}([a-z]\d){2}
Alternancia
| Representa una alternancia entre expresiones , o una o otra.
Ejemplos:
Cadenas: { "la", "el", "ellos", "las" }
Expresiones: el|la , le|a , l(e|a)
Cadenas: { "Secreto", "Barro", "Carro,Tarro", "Espiral", "B"}
Expresiones: B|Tarro, la , (B|T)arro , \D{8}|Barro
Metacaracteres
. Representa cualquier carcter
Incluido el espacio
Ejemplos:
Cadenas: { "Acceso", "Espeso", "El Tractor", "Cdigo fuente" }
Expresiones: . , A. , E.
Metacaracteres
+ Significa que la expresin se repite 1 mas veces
Ejemplos:
Cadenas: { "aaaa", "soso", "patoso", "Cdigo fuente" }
Expresiones: (so)+, a+ , o+
Cadenas: { "tejer", "el mapa5", "140suerte", "e 50" };
Expresiones: (\d+\D+|\D+\d+) , \w+\s+\d+
Cadenas:{ koala", "collllor,", "El color", "El collar" };
Expresiones: col+[oa]r , [ck]ol+[oa]r ,
Metacaracteres
* Significa que se repite 0 o mas veces
Ejemplos:
Cadenas: { "aaaa", "soso", "patoso", 213213" }
Expresiones: w*, [a-z]*, [1-9]*
Cadenas: { #cinco5555#", #seis66666#", #cuatro4444#", #dos22#" };
Expresiones: #(cinco|seis)[56]*# , #[a-z]{4,5}\d*#
Cadenas: { "int a =3;", "int a=345;", "float a = 4.5;", "bit b = 0;"};
Expresiones: [a-z]*\s+\D*\s*=\s*[\d\.]*;
Metacaracteres
? Significa que se repite 0 o 1 vez
Ejemplos:
Cadenas: { "Ha", "Ha cantado", "a","Hab", "Hablabla" }
Expresiones: Ha(bla)?, [a-z]?, [1-9]?
Cadenas: { "Apila", "pila", "Atar;", "Atracar", "reloj" };
Expresiones: A?[a-z]+[ra] ,
Delimitadores
\b Significa que coincide si es un limite de palabra
(se suele incluir al principio y/o al final de las expresiones)
Se utiliza para buscar palabras
Las palabras no solo estn delimitadas por espacios, tambin
pueden estarlo por otro tipo de caracteres
;
:
.
,
=
Delimitadores
Ejemplos:
Cadenas: { "Hola", "ola", "La ola", "Pola", "olaola"};
Expresiones: \bola, \bola\b
Delimitadores
\B Significa que coincide si no es un limite de palabra
Ejemplos:
Cadenas: { "Hola", "ola", "La ola", "Pola", "olaola"};
Expresiones: \Bola, \Bola\b
Cadenas: { "Diseo", "El Diseo", "Diseador", "Pases" };
Expresiones: \Bo\B ,
Delimitadores
^ Significa que la coincidencia se debe producir al inicio de la
cadena (No confundir cadena con palabra)
Las validaciones web utilizan comnmente este tipo de
delimitadores de cadena, tanto el de inicio como el de final.
Tambin podra ser al principio de la lnea si se trabaja con
RegexOptions.Multiline
Regex.Match(input, pattern, RegexOptions.Multiline);
Ejemplos:
Cadenas: { "refrigerador1", "do1 re1 mi1", "r", "1Alacrn", "Sur1" }
Expresiones: ^r, ^[rS]\w+1, ^\D
Delimitadores
\A Significa que la coincidencia se debe producir al inicio de la
cadena (Sin posibilidad de varias lneas)
Ejemplos:
Cadenas: { "refrigerador1", "do1 re1 mi1", "r", "1Alacrn", "Sur1" }
Expresiones: \Ar, \A[rS]\w+1, \A\D
Delimitadores
$ Significa que la coincidencia se debe producir al final de la
cadena o lnea
Tambin podra ser al principio de la lnea si se trabaja con
RegexOptions.Multiline
Regex.Match(input, pattern, RegexOptions.Multiline);
Ejemplos:
Cadenas: { "La bandera roja", "La bandeja azul", "El bar nuevo" };
Expresiones: bar$ , ^[A-Z].+[ao]$
Delimitadores
\Z Significa que la coincidencia se debe producir al final de la
cadena (o antes de un salto de lnea)
\z Significa que la coincidencia se debe producir al final de la
Ejemplos:
Cadenas: { "La bandera roja", "La bandeja azul", "El bar nuevo" };
Expresiones: bar\> , ^[A-Z].+[ao]\Z
@ "[#@] "
encuentra #@ captura la posicin y suprime el carcter
@"(?=[#@])" Positive Lookahead
encuentra #@ captura la posicin que lo precede
@"(?<=[#@])" Positive Lookbehind
encuentra #@ captura la posicin que le sigue
o#dos
o#dos
@ \d "
encuentra el digito y captura la posicin y suprime el carcter
aA123
aA123
Comentarios en HTML
<!-- Mi comentario HTML-->
http://www.rexv.org/
http://regexpal.com/
http://www.regexplanet.com/advanced/java/index.html
http://www.metriplica.com/es/recursos/expresiones-regulares
http://www.regular-expressions.info/javascriptexample.html
http://www.regextester.com/