można załadować dokument do góry z DOM/HTML parsowania biblioteki (patrz html5lib), chwycić wszystkie węzły tekstowe, dopasować je przed regularnym ekspresja i wymienić węzły tekstowe z wymianą regex z URI z kotwami wokół niego za pomocą PCRE takich jak:
/(https?:[;\/?\\@&=+$,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%][\;\/\?\:\@\&\=\+\$\,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%#]*|[KZ]:\\*.*\w+)/g
Jestem całkiem pewien, że można biczować przez i znaleźć jakiś mechanizm, który to robi, ja nie mogę myśleć o niczym z mojej głowy.
Edycja: Spróbuj użyć odpowiedź tutaj: 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)
rozmowę urlify2 na sznurku i myślę, że to wszystko, jeśli nie mamy do czynienia z obiektem DOM.
Można by jednak zakładać, że tworzysz * HTML, ponieważ zwykły tekst nie ma specjalnej notacji o linku a URL. Więc możesz przekonwertować 'http: //blah.com/page/ref/something? Param = foo' znaleziony w twoim zwykłym tekście na' http://blah.com/page/ref/something?param=foo ', tak? – PaulMcG
Tak, zostanie on wstawiony do dokumentu HTML – hoju
, a odpowiedzi na razie koncentrowały się na dopasowaniu adresu URL. Co powiesz na zastąpienie go linkiem? – hoju