Primero principios básicos:
Anclas.
Donde se encuentra lo que queremos encontrar.
- ^patron, coincidencia con cadenas que comiencen con «patron»
- patron$, coincidencia con cadenas que terminen con «patron»
- ^patron$, la cadena exacta es «patron»
- [abc] el carácter puede ser a ó b ó c
- [123ac] el carácter puede ser 1 ó 2 ó 3 ó a ó c
- ciudadan[oa]s puede ser ciudadanos o ciudadanas la cadena que se busca obtener.
- [a-z] puede ser cualquier carácter de la a a la z.
- [0-9] puede ser cualquier número del 0-9
- [b5-] puede ser un guion b o 5, si se quiere usar un guion, este va al principio o al final nunca intermedio para evitar confusiones.
- [^dbz] puede ser cualquier carácter que no sea ni d ni b ni z.
- ?: 0 o una vez.
- +: una o mas veces.
- *: cero o mas ocurrencias.
- {x}: número exacto de ocurrencias que indique x siendo x una variable entera.
- {x,y}: al menos x y no más de y ocurrencias siendo x e y variables enteras.
- 5 caracteres
- El primer carácter es el símbolo «#»
- El resto son números del 0-9
- Ejemplo #12345
import re #Modulo de Python para expresiones regulares.
import os
patron=re.compile('[#][0-9]{4}') #Declaracion de patron y almacenamiento en la variable patron
prueba='#123a' #Primera prueba
if patron.findall(prueba)==[prueba]:
print "Es correcto"
else:
print "Fallo"
prueba='#1234'#Segunda prueba
if patron.findall(prueba)==[prueba]:
print "Es correcto"
else:
print "Fallo"
El resultado del findall siempre sera una lista con los resultados encontrados, lo que se trata de encontrar es que toda la variable sea un mismo resultado, eso significa que toda la cadena es parte de la expresión que declaramos.
La primera comparación nos dará como resultado Fallo, esto debido a que solo se cumple la expresión regular hasta el «3» y entonces el resultado que retornara el findall seria [‘#123’] cuando lo que se pide es que sea igual a la variable que entro para comparar, a la cadena original.
En la segunda comparación dio como resultado «Es correcto» por que el findall dio como resultado [‘#1234’] que es igual a la cadena que mandamos a comparar y por lo tanto es True o «Es correcto».
Este es un tema complejo, te recomiendo practica y que no dudes en escribirme tus dudas, recuerda que pueden ser dudas que muchas otras personas tengan.
De igual manera si deseas más tutoriales de este tema solo pídelos en comentarios. Gracias.
Fuentes y lecturas recomendadas:
https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular consultada el 15 de julio del 2015.
http://www.maestrosdelweb.com/guia-python-expresiones-regulares/ consultada el 15 de julio del 2015.
https://docs.python.org/2/library/re.html?highlight=re#module-re consultada el 15 de julio del 2015.
Muy en especial checate esta pagina, te puedes encontrar muchas herramientas para tus programas.