Forum Webscript.Ru
Программирование => Perl => Тема начата: YYYn от 02 Февраля 2003, 02:19:35
-
Оговорюсь сразу, эти темы уже несколько раз здесь обсуждались, но тем не менее.
Я думаю, что надо все вместе собрать и попросить товарища НеоНокса добавить это в FAQ, тем более, что он давно хотел это сделать.
1. Удаление ссылок из строки.
2. Удаление e-mail из строки.
3. Вылавливание ссылок в строке.
4. Вылавливание e-mail в строке.
5. Замена адресов в строке на ссылки (http://myhost.ru - myhost.ru).
6. Замена e-mail в строке на ссылки (info@myhost.ru - info@myhost.ru).
Для первого пункта я использую:
$line =~ s{(.*)}{$2}ig;
Почему я поднял эту тему? Мне сейчас потребовался пункт №6, но сразу найти не смог...
Накидайте сюда у кого что есть.
Всем заранее спасибо!
-
Для замены адресов я использую такие функции:
sub process_links
{
my $message = shift;
$message =~ s|http(s?)://([0-9A-Za-z\\:\\.\\-_\\@\\/\\\\\\?=&\\+\\#]+)|qq`[ссылка]|egi;
$message =~ s|ft p://([0-9A-Za-z\\:\\.\\-_\\@\\/\\\\\\?=&\\+\\#]+)|\'[ссылка]\'|egi;
$message =~ s|mailto: ([0-9A-Za-z\\:\\.\\-_\\@\\/\\\\\\?=&\\+\\#]+)|\'[email]\'|egi;
$message
}
sub escape
{
my $str = shift;
$str =~ s/([^0-9A-Za-z:\\.\\-_\\@\\/\\\\\\?=&\\+\\#])/sprintf("%%%x", ord($1))/eg;
$str
}
-
P.S. функции в форуме отображаются неправильно; исчезли бэкслэши
-
Е. Перлов
поставь по три слэша
-
Я немного подумал, сделал несколько проверок, и решил чуть-чуть изменить эти функции:
sub process_links
{
my $message = shift;
$message =~ s|http(s?)://(\\S+)|qq`[ссылка]`|egi;
$message =~ s|http://ftp://(\\S+)|\'[ссылка]\'|egi;
$message =~ s|mailto: (\\S+)|\'[email]\'|egi;
$message
}
sub escape
{
my $str = shift;
$str =~ s|([^0-9A-Za-z:.=&+/%_@\\-\\?\\#\\\\])|sprintf "%%%x", ord($1)|eg;
$str
}
_____
только надо убрать пробел после mailto: (я его добавил, чтобы не появился смайлик ": (" )
-
надо все вместе собрать и попросить товарища НеоНокса добавить это в FAQ
Мне тоже так кажется, потому что, мне приходитря буквально посимольно узнавать правду о регулярных выражениях. :-)
-
приходитря буквально посимольно узнавать правду о регулярных выражениях.
А один раз прочитать мануал или книжку?
ИМХО, регулярные выражения - не тема для FAQ\'а.
-
Честно говоря, никогда не читал книжки по программированию, и манулалы тоже...
Я больше смотрю и учусь как делают другие и выбираю наиболее рациональное решение, тем более что любую задачу можно решить несколькими способами, а в книжках, как правило, описывается лишь один способ, который автор где-то надыбал...
-
Phoinix
Ты очень не прав. Регулярные выражения один раз осознаются, а потом легко и непаринужденно придумываются на все случаи жизни.
А книжки читать надо. Возражения, приведенные тобой - полная чушь, да и как ты можешь что-то знать о книгах по программированию, если ни одной не прочитал?
К тому же консультировать по какому-то языку человека, не читавшего мануал - непрасный труд. Ты ему скажешь, как делать А и Б, а он к тебе завтра придет и спросит: "а как же В?"...
-
ИМХО, регулярные выражения - не тема для FAQ\'а.
А тогда для чего? Для того, чтобы там писать иди и читай perlfaq? Мне однажды потребовался крон и я пошел в FAQ, а там вмето нормального ответа: читай perlfaq... Че я сам не догадаюсь? Зачем вообще нужен такой FAQ!?
ИМХО один из вариантов перевода "FAQ" - "часто задаваемые вопросы". Разве регулярные это не частая тема?
-
А книжки читать надо.
Что книжки читать надо я не спорю, но как мне кажется, человек лезет в форум или FAQ, не в тот момент, когда есть возможность найти ответ в мануале. Не у всех в нужный момент есть книжка под рукой. По регулярным я нашел http://www.books.ru/shop/books/12870 Ваше мнение о ней? Стоит покупать?
-
Стоит покупать?
Стоит - это перевод так называемой MRE (Mastering Regular Expressions). Если нет проблем с английским, то pdf вариант книги можно нарыть и в интернете.
-
Тут еще можно глянуть:
http://perldoc.narod.ru/ (http://perldoc.narod.ru/)
Крутая вещь появилась на моем сайте - учебник по regexp от Стива Холзнера.
И еще разные доки в pdf. Жаль только давно не обновляется...
-
[off]
нашел http://www.books.ru/shop/books/12870 Ваше мнение о ней? Стоит покупать?
Ее ты вряд ли купишь - думаю, она везде закончилась. Но, в этом месяце должно выйти второе издание.[/off]
ИМХО один из вариантов перевода "FAQ" - "часто задаваемые вопросы". Разве регулярные это не частая тема?
Это слишком объемная тема, чтобы освещать ее в FAQ, недаром ей целые книги посвящают. Вот если бы речь шла об отдельном FAQ по регулярным выражениям...