En Thu, 10 Feb 2011 14:42:36 +0100, lopz <[email protected]> escribió:
El día 10 de febrero de 2011 04:50, Chema Cortes <[email protected]>
escribió:
Si sabes que los tres patrones de búsqueda van a ir en ése orden, se
podrían encadenar:
pat1="""q=(.*?)[&"]"""
pat2="(\d{4}-\d{2}-\d{2})"
pat3="""<p class="text">(.*?)</p>"""
pat=re.compile(".*?".join((pat1,pat2,pat3)), re.DOTALL)
Dos comentarios:
1) activa el flag dotall para búsquedas multilíneas
2) te sobraba el carácter | en el primer patrón (por lo que comentabas)
Sí, gracias por el tip, lo del caracterr | lo puse por or pero ahora
que veo no es necesario jeje
Peero sigo con la duda de que cómo sería en una sola expresión?
cómo le digo que me coja desde q= hasta </p> y lo que está en medio
agrupar partes por grupos?
¿o es que esto no se puede?
Te había respondido a tu pregunta: si juntas los tres grupos con .*?
tendrás todo en una sóla expresión:
"""(?s)q=(.*?)[&"].*?(\d{4}-\d{2}-\d{2}).*?<p class="text">(.*?)</p>"""
Pero te en cuenta que algún día tú u otro programador querrá modificar
este código, así que ponlo lo más fácil posible.
Por otro lado, tú mismo estás viendo que es mejor primero buscar un
fragmento y luego trocearlo en grupos. Tal vez deberías hacer caso a tu
instinto.
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/