como matchear un url

Fernando Canizo conan en lugmen.org.ar
Jue Ago 18 07:16:35 CEST 2005


Tengo bastante oxidados mis conocimientos de regexp (y encima perdí el
libro de J. Friedl hace ya unos años, seguro la respuesta estaba
allí).

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.

Son las 2 AM y me duele la cabeza, definitivamente estoy haciendo algo
mal, pero qué?

-- 
Fernando Canizo - LUGMen: www.lugmen.org.ar - A8N: a8n.lugmen.org.ar
Meader's Law:
	Whatever happens to you, it will previously
	have happened to everyone you know, only more so.




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