como matchear un url

Chema Cortes py en ls-l.org
Jue Ago 18 12:17:27 CEST 2005


Fernando Canizo escribió:

> Quiero extraer una url de un texto normal, he probado lo siguiente
> pero no anda:
> 
> texto = "bla bla bla http://www.ejemplo.org/ mas bla bla bla"
> # distintas variantes
> weburl = re.compile(" (http://.*?) ")
> weburl = re.compile("\b(http://.*?)\b")
> weburl = re.compile(" (http://.*?/) ")
> weburl = re.compile(" (http://[a-zA-Z.-_]*?/) ")
> # y haciendo algunas mezclas entre estas tb.
> 
> Lo importante es que el * no sea comilón (greedy) asique en todas está
> expresado así '*?' que es lo que hay que hacer según la documentación.
> 
> Sin embargo al intentar una substitución como esta:
> weburl.sub("<a href=\"\\1\"></a>", texto)
> 
> y ni siquiera simplificando para probar:
> weburl.sub("\\1", texto)
> 
> Me devuelve 'texto' tal cual.

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.

Prueba con esta expresión:

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




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