Вопрос по url, python, regex, hyperlink – Замените URL ссылкой, используя регулярное выражение в python

3

Как мне преобразовать текст в ссылку? Вернувшись в PHP, я использовал этот фрагмент кода, который хорошо работал для моей цели:

            $text = preg_replace("#(^|[\n ])(([\w]+?://[\w\#$%&~.\-;:=,[email protected]\[\]+]*)(/[\w\#$%&~/.\-;:=,[email protected]\[\]+]*)?)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\3</a>", $text);
            $text = preg_replace("#(^|[\n ])(((www|ftp)\.[\w\#$%&~.\-;:=,[email protected]\[\]+]*)(/[\w\#$%&~/.\-;:=,[email protected]\[\]+]*)?)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\3</a>", $text);

Я пробовал в Python, но не смог заставить его работать .. Было бы очень хорошо, если бы кто-то мог перевести это на Python :) ..

если вы делаете это в Django, то есть «urlize». фильтр:docs.djangoproject.com/en/dev/ref/templates/builtins/#urlize Javier
Большое спасибо, этот фильтр (больше urlizetrunc) действительно интересен. Я должен был упомянуть, что я использую Django. user122750
Основываясь на комментариях Хавьера, источник URL, похоже, вам нужен:code.djangoproject.com/browser/django/trunk/django/utils/… hao
Что не сработало? Какие результаты вы получили? Вы должны дать нам подсказку о том, что вы пытались. Вы, вероятно, получите лучшие результаты, что даст нам отправную точку, тем более что это показывает, что вы готовы поставить работу над проблемой. Blair Conrad

Ваш Ответ

1   ответ
6

Код ниже - это простой перевод на python. Вы должны подтвердить, что он действительно делает то, что вы хотите. Для получения дополнительной информации, пожалуйста, смотритеPython Regular Expression HOWTO.

import re

pat1 = re.compile(r"(^|[\n ])(([\w]+?://[\w\#$%&~.\-;:=,[email protected]\[\]+]*)(/[\w\#$%&~/.\-;:=,[email protected]\[\]+]*)?)", re.IGNORECASE | re.DOTALL)

pat2 = re.compile(r"#(^|[\n ])(((www|ftp)\.[\w\#$%&~.\-;:=,[email protected]\[\]+]*)(/[\w\#$%&~/.\-;:=,[email protected]\[\]+]*)?)", re.IGNORECASE | re.DOTALL)


urlstr = 'http://www.example.com/foo/bar.html'

urlstr = pat1.sub(r'\1<a href="\2" target="_blank">\3</a>', urlstr)
urlstr = pat2.sub(r'\1<a href="http:/\2" target="_blank">\3</a>', urlstr)

print urlstr

Вот как выглядит результат на моем конце:

<a href="http://www.example.com/foo/bar.html" target="_blank">http://www.example.com</a>
Error: User Rate Limit Exceeded user122750
Error: User Rate Limit Exceeded user122750

Похожие вопросы