Puede cargar el documento con una biblioteca DOM/análisis de HTML (ver html5lib), agarrar todos los nodos de texto, coincide con ellos contra un habitual expresión y sustituir a los nodos de texto con un reemplazo de expresiones regulares de la URI con anclajes alrededor de ella utilizando un PCRE tales como:
/(https?:[;\/?\\@&=+$,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%][\;\/\?\:\@\&\=\+\$\,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%#]*|[KZ]:\\*.*\w+)/g
estoy bastante seguro de que puede azotar a través y encontrar algún tipo de utilidad que hace esto, Sin embargo, no puedo pensar en ninguno de mi cabeza.
Editar: Trate de usar las respuestas aquí: How do I get python-markdown to additionally "urlify" links when formatting plain text?
import re
urlfinder = re.compile("([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}|((news|telnet|nttp|file|http|ftp|https)://)|(www|ftp)[-A-Za-z0-9]*\\.)[-A-Za-z0-9\\.]+):[0-9]*)?/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*[^]'\\.}>\\),\\\"]")
def urlify2(value):
return urlfinder.sub(r'<a href="\1">\1</a>', value)
urlify2 llamada en una cadena y creo que eso es todo si no se trata de un objeto DOM.
Uno supondría, sin embargo, que está * creando * HTML, ya que el texto sin formato no tiene una notación especial de un enlace frente a una URL. Entonces, convertirías 'http: //blah.com/page/ref/something? Param = foo' en tu texto simple a' http://blah.com/page/ref/something?param=foo ', ¿sí? – PaulMcG
sí, luego se insertará en un documento HTML – hoju
, las respuestas hasta ahora se han centrado en hacer coincidir la URL. ¿Qué hay de reemplazarlo con el enlace? – hoju