Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Регулярные выражения


Автор: s_a_s_h_a 2.9.2004, 16:52
Есть строка надо найти все что похоже на URL'ы и EMAIL'ы и заменить похожий URL на URL с http

Пример:
$str="fhdkj site.my.ru jfdsdk asgolovin@yandex.ru jfkjk http://site.my.ru dklsjk";

нужен результат:
$str="fhdkj <http://site.my.ru> jfdsdk <asgolovin@yandex.ru> jfkjk <http://site.my.ru> dklsjk";

Ничего не могу придумать. sad.gif

Автор: s_a_s_h_a 2.9.2004, 17:13
По отдельности получилось, а вот вместе пока нет

$str =~ s/\s(([\w_\.\-])+\@(([\w\-])+\.)+([\w]{2,4}))\s/ \<$1\> /g;

$str =~ s/\s((([\w_\-0-9])+\.)+([\w_\-0-9])+)\s/ \<$1\> /g;

$str =~ s/\s((http:\/\/)(([\w_\-0-9])+\.)+([\w_\-0-9])+)\s/ \<$1\> /g;

Добавлено @ 17:18
Оказывается их надо просто друг за другом расположить. smile.gif

Автор: Chuck 2.9.2004, 20:49
Так я не понял ты решил проблему???
Если да, закрывай тему!! А то я не прочитав, полез в Справочник RegExp )))

Автор: s_a_s_h_a 3.9.2004, 08:35
Да решил. Я на форумах недавно. Почитал правила, но нигде не нашел, что надо закрывать тему и
как это делать. Кстати, для поиска URL'ов нужно внести небольшую корректировку

$str =~ s/\s((([\w_\-0-9\/~])+\.)+([\w_\-0-9\/~])+)\s/ \<$1\> /g;

$str =~ s/\s((http:\/\/)(([\w_\-0-9\/~])+\.)+([\w_\-0-9\/~])+)\s/ \<$1\> /g;

А почитать никогда не вредно.

Автор: ElectricalStorm 3.9.2004, 10:05
Цитата

А почитать никогда не вредно


Это точно .

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)