Expresiones Regulares Introduccin Las expresiones regulares permiten expresar
- Slides: 12
Expresiones Regulares
Introducción • Las expresiones regulares permiten expresar patrones de búsqueda genéricos dentro de cadenas. • Ejemplos: – a[lnm]a - Coincide con ala, ana, ama – ana|ama - Coincide con ana y ama – co. o- Coincide con coso, como, coro. . .
Metacaracteres • Son caracteres especiales dentro de las expresiones: – [] {} * + $ ^ () | ? • No se interpretan literalmente sino como operadores especiales para construir patrones.
Clases de caracteres • Los corchetes se utilizan para expresar clases de caracteres: – [abc] Alguno de los caracteres a, b, c – [^abc] Cualquier carácter distinto de a, b, c – [a-z] Cualquier carácter entre la a y la z – [0 -9 a] Cualquier carácter entre '0' y '9' y la 'a' • El punto. representa cualquier carácter (comodín)
Cuantificadores • Los operadores de repetición son: *, +, ? – a*- O o más veces la 'a' – a+ - 1 o más veces la 'a' – a? - 1 o ninguna vez la 'a' – (abc)+ - 1 o más veces la cadena 'abc' – a{4} - la cadena 'aaaa'
Alternativas • El metacarácter | expresa alternativas: • ab|ac - la cadena 'ab' o la cadena 'ac' • ab(cd|ef) - la cadena 'abcd' o 'abef'
Anclas • Los anclas indican lugares especiales dentro de la cadena de búsqueda: – $ - final de cadena – ^ - comienzo de cadena – b - frontera de palabra
Clases especiales • • • w - alfanumérico W - no alfanumérico s - espacio S - no espacio d - dígito D - no dígito
Expresiones regulares en python • • • El módulo re maneja expresiones regulares: >>> import re >>> p = re. compile('[a-z]+') # compilación >>> m = p. search('la cadena') # busqueda >>> m. group(0) 'la' >>> p. findall('la cadena') # obtener todas ['la', 'cadena']
El objeto match • El método search() retorna un objeto match – p = re. compile('expresion regular') – m = p. search('cadena de busqueda') • Los métodos para m son: – m. start()- posición de comienzo – m. end()- posición de fin – m. group()- cadena de coincidencia
Grupos • Cada par de paréntesis determina un grupo en la coincidencia. • Se numeran de izquierda a derecha • El grupo 0 hace referencia a la coincincidencia completa • >>> p = re. compile('(d+), (d+)') • >>> m = p. search('El 44, 89 % del producto') • >>> m. group(0) – '44, 89' • >>> m. group(1) – '44' • >>> m. group(2) – '89'
Protegiendo los metacaracteres • Si queremos buscar alguno de los metacaracteres explícitos es necesario protegerlos escribiendo una doble barra invertida: – '\. ' el punto – '\(' paréntesis – '\\' barra invertida • Otra forma: – r'. ' – r'(' – r'\'