Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с регулярным выражением, Регулярка для оборачивания ссылок в <a> 
:(
    Опции темы
jackson1986
Дата 21.4.2013, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.4.2013

Репутация: нет
Всего: нет



Всем привет.

Задача: В тексте все ссылки (подстроки начинающиеся с "http:", "https:" и заканчивающиеся пробелами или символами табуляции)
необхдимо завернуть в тег <a href="ссылка">ссылка</a>, при этом заворачивать нужно такие ссылки которые уже не являются значяением
аттрибута href (href="ссылка" оставить без изменений)

Решение:

Код

String src = "sdfsdf<a title=\"fff\" href=\"http:\\www.a1.ru\"> dggf <p> http:\\www.a2.ru </p>sdfsd<p>http:\\www.a3.ru</p>";
return src.replaceAll("(\\A|\\s)((http|https|ftp|mailto):\\S+)(\\s|\\z)", "$1<a href=\"$2\">$2</a>$4");




Проблема:Результат получается в этом примере

sdfsdf<a title="fff" href="http:\www.a1.ru"> dggf <p> <a href="http:\www.a2.ru">http:\www.a2.ru</a> </p>sdfsd<p>http:\www.a3.ru</p>

Т.е нормально завернулась только ссылка www.a2.ru, а www.a3.ru не была обработана (потому что нет пробелов между ней и тегами).
Подскажите пожалуйста, как можно изменить регулярное выражение, чтоб вот эта ссылка <p>http:\\www.a3.ru</p> тоже обрабатывалась ?

Вот такое изменение "(\\A|\\s|>)((http|https|ftp|mailto):\\S+)(\\s|\\z)" помогло частично — последняя ссылка стала обрабатываться
как <a href="http:\\www.a3.ru</p>">http:\\www.a3.ru</p></a> т.е. последний тег </p> тоже попадает. Я так понимаю, тут все дело в \S+ который гребет все символы, кроме пробела, но как сделать, чтоб он брал все символы до пробела или символа "<" ?

Заранее большое спасибо
PM MAIL   Вверх
Stolzen
Дата 21.4.2013, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Попробуйте "\S+?"


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
jackson1986
Дата 22.4.2013, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.4.2013

Репутация: нет
Всего: нет



Спасибо, но все равно не работает.

Вот это решение помогло


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.