Python / Django: поиск авто-URL + подсветка в тексте - PullRequest
0 голосов
/ 22 января 2012
  • Я создал свое первое веб-приложение, используя Python, Django, Bootstrap и google-app-engine
  • Требование, которое я имею, заключается в том, что, когда люди предлагают внешние ссылки, программа должна быть в состоянии найти и выделить в тексте кликабельный URL.
  • Например, когда мы даем http://www.google.com в стеке потока, он конвертирует его как гиперссылку
  • Я понятия не имею, как этого добиться, любая помощь очень ценится

Ответы [ 3 ]

1 голос
/ 23 января 2012
0 голосов
/ 22 января 2012

Это не полный ответ, но поможет вам начать: чтобы делать то, что вы хотите в Django, вам нужно (1) взять вводимый пользователем текст, (2) проанализировать его для шаблонов URL и(3) вернуть HTML с гиперссылкой для отображения в представлении.

Я не знаю, существует ли каноническое регулярное выражение для этой цели, но некоторые, которые, кажется, работают хорошо, здесь и в этот ответ .

В SO, как вы заметили, проанализированный текст сначала отображается в отдельном окне отображения и, как только вы нажимаете «отправить»перерисован.Вы можете выбрать много способов визуализации текста (например, для анализа текста на стороне клиента с помощью Javascript).Однако для первого этапа вам, вероятно, следует просто создать страницу «результатов», в которой каждый URL-адрес будет заменен гиперссылкой (<a href='url'>url</a>) на этот URL-адрес.

0 голосов
/ 22 января 2012

Загляните в модуль python re.

Например, взяв шаблон регулярного выражения URL Джона Грубера и сопоставив его с его набором данных , вы можете сделать что-то вроде ...

giant_regex = r'''(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))'''
output_with_links = re.sub(giant_regex, r'<a href="\1">\1</a>', source_html)

К сожалению, это будет также захватывать реальные ссылки, которые не нуждаются в конвертации, но теперь ваша проблема заключается в поиске правильного регулярного выражения (которое, я уверен, было задокументировано в Интернете, если вы посмотрите). Часть Python и Django завершена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...