Каков хороший способ обнаружения URL-адресов в строковом тексте?

#url #language-agnostic

#url #не зависит от языка

Вопрос:

привет всем, у меня есть строковый текст, который может содержать URL-адреса (этот текст получен из текстовой области формы), и я хочу определить эти URL-адреса и окружить их тегом, чтобы они были представлены на html-странице в виде ссылок, каков наилучший способ сделать это?

Ответ №1:

используйте регулярные выражения.

 (?i)b((?:[a-z][w-] :(?:/{1,3}|[a-z0-9%])|wwwd{0,3}[.]|[a-z0-9.-] [.][a-z]{2,4}/)(?:[^s()<>] |(([^s()<>] |(([^s()<>] )))*)) (?:(([^s()<>] |(([^s()<>] )))*)|[^s`!()[]{};:'".,<>?«»“”‘’]))
  

смотрите здесь из дополнительной информации
http://daringfireball.net/2010/07/improved_regex_for_matching_urls

     public boolean isURL(String s){
    return s.matches(" (?i)b((?:[a-z][w-] :(?:/{1,3}|[a-z0-9%])|wwwd{0,3}[.]|[a-z0-9.-] [.][a-z]{2,4}/)(?:[^s()<>] |(([^s()<>] |(([^s()<>] )))*)) (?:(([^s()<>] |(([^s()<>] )))*)|[^s`!()[]{};:'".,<>?«»“”‘’]))");
}
  

Комментарии:

1. на каком языке вы хотите это сделать?

2. в Java у меня есть строковый текст, в который я хочу поместить любой URL-адрес внутри тега a.

Ответ №2:

Это сложная проблема, в которой трудно разобраться правильно, главным образом потому, что в URL-адресах много допустимых символов, которые вы не часто видите в них.

http://www.codinghorror.com/blog/2008/10/the-problem-with-urls.html

Редактировать: The daringfireball.net link учитывает некоторые из этих факторов, но вы можете прочитать о компромиссах в сообщении в блоге.