python: convertir links a html con expresiones regulares (regex)

Ya le vamos pillando el callo a python, en este caso pasaremos los links de un texto a html usando expresiones regulares

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re

text = "http://aaaaa       https://bbbbb ftp://ccccc\n http://dddddddd"

m = re.sub(r'(?i)(^|\s+|\A)(http|https|ftp)(\://\S+)(\s+|\Z|$)', '\\1<a href=\"\\1\\2\" onclick=\"window.open(this.href); return false;\">\\2\\3</a>\\4', text)

print m

Respuesta:

 

<a href="http://aaaaa" onclick="window.open(this.href); return false;">       <a href="https://bbbbb" onclick="window.open(this.href); return false;"> <a href="ftp://ccccc" onclick="window.open(this.href); return false;">
 <a href="http://dddddddd" onclick="window.open(this.href); return false;">

Ya sé que no es una expresión regular muy correcta ya que algunas cosas no debería abarcar pero bueno lo he hecho hasta que haya algún espacio en blanco o sea final de linea.

Explicación de la expresión regular:

  • r'(?i) -> para no diferenciar entre mayúsculas y minúsculas
  • (^|\s+|\A) -> espacio o primer carácter o comienzo de linea
  • (http|https|ftp) -> los links siempre empiezan con http O https O ftp
  • (\://\S+) -> : hay que escapara con el carácter \ luego // y para terminar \S+ para que pille cualquier carácter que no sea espacio
  • (\s+|\Z) -> espacio o último carácter o final de linea

Explicación del reemplazo:

  • \\1 significa el valor del primer () de la expresión regular: (^|\s+|\A)
  • \\2 significa el valor de la segunda () de la expresión regular: (http|https|ftp)
  • \\3 significa el valor de la tercera () de la expresión regular: (\://\S+)
  • \\4 significa el valor de la cuarta () de la expresión regular: (\s+|\Z|$)
This entry was posted in Gnu / Linux, Internet, Programacion, Tutoriales / Manuales and tagged , , . Bookmark the permalink.

Deja un comentario

Tu dirección de correo electrónico no será publicada.