como matchear un url

Fernando Canizo conan en lugmen.org.ar
Jue Ago 18 15:16:09 CEST 2005


El 18/ago/2005 a las 07:17 -0300, Chema me decía:
> Todas las expresiones están bien. No pones el texto, pero seguramente es
> que la url del texto no está delimitada por espacios en blanco.

Nonono, si el texto es ese, estaba haciendo las pruebas en el ipython
antes de colocarlo en mi código y no me funcionaba.

De hecho tenía varios textos, similares para probar los distintos
posibles casos: al ppio. de una oración, al final, en el medio, y
como parte de otra palabra (caso donde no quiero que matchee, aunque
no imagino que palabra podría ser esa).

El caso es que tras tu sugerencia seguí haciendo pruebas y he llegado
a la conclusión de que '\b' no sirve para este caso. No sé si es que
las '/' del url lo confunden o qué, pero deja de hacer lo que debería
hacer.

> Prueba con esta expresión:
> 
> weburl=re.compile("(http://.*?)(?=\Z|\s)")
> weburl.sub('<a href="\\1">\\1</a>', texto)

Funcionó, le agregué lo siguiente nomás:
re.compile("(\s|\A)(http://.*?)(\Z|\s)")

Esta funciona con todos los casos: al principio, al final, en el
medio, solo y junto a otra palabra (en ese caso no matchea, que es el
comportamiento deseado).

No me hacía falta el "look ahead"

Gracias.
-- 
Fernando Canizo - LUGMen: www.lugmen.org.ar - A8N: a8n.lugmen.org.ar
guru, n:
	A computer owner who can read the manual.




Más información sobre la lista de distribución Python-es