URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8354
[ Назад ]

Исходное сообщение
"URL regex"

Отправлено SubGun , 16-Июл-09 12:14 
Добрый день.
Нужно обрезать URL, чтобы получить первую и последнюю часть. Например, из url http://www.teztour.com/book/site/images/button_s.gif необходимо получить:
1. http://www.teztour.com
2. button_s.gif
Поскольку  регулярными выражениями я не дружен в принципе, прошу помощи.

Содержание

Сообщения в этом обсуждении
"URL regex"
Отправлено phpcoder , 16-Июл-09 12:18 
>Добрый день.
>Нужно обрезать URL, чтобы получить первую и последнюю часть. Например, из url
>http://www.teztour.com/book/site/images/button_s.gif необходимо получить:
>1. http://www.teztour.com

coder@ubuntu ~ $ echo 'http://www.teztour.com/book/site/images/button_s.gif' | sed 's|^\(http://[^/]\+\)/.*|\1|'
http://www.teztour.com

>2. button_s.gif
>Поскольку  регулярными выражениями я не дружен в принципе, прошу помощи.

basename 'http://www.teztour.com/book/site/images/button_s.gif'
button_s.gif


"URL regex"
Отправлено SubGun , 16-Июл-09 12:22 
Спасибо.
Что я делаю не так?

#!/usr/bin/perl

$link = "http://need4soft.ru/engine/classes/tagcloud/tagcloud.swf";
$link =~ s|^\(http://[^/]\+\)/.*|\1|;
print "$link\n";


"URL regex"
Отправлено const86 , 16-Июл-09 13:27 
my $url = "http://need4soft.ru/engine/classes/tagcloud/tagcloud.swf";
if ($url =~ m|(http://[^/]+).*/([^/]+)|) {
    print "$1\n";
    print "$2\n";
}

"URL regex"
Отправлено phpcoder , 16-Июл-09 13:28 
>Спасибо.
>Что я делаю не так?

Регулярные выражения, которые работают в sed могут не работать в Perl и наоборот. Либо я не увидел, что раздел про Перл, либо вы этого не указали.

coder@ubuntu ~ $ perl -e '$link = "http://need4soft.ru/engine/classes/tagcloud/tagcloud.swf"; $link =~ s|^(http://[^/]+)/.*|\1|; print "$link\n";'
http://need4soft.ru


"URL regex"
Отправлено SubGun , 16-Июл-09 13:32 
О, гуру!

"URL regex"
Отправлено fx , 16-Июл-09 13:22 
>coder@ubuntu ~ $ echo 'http://www.teztour.com/book/site/images/button_s.gif' | sed 's|^\(http://[^/]\+\)/.*|\1|'
>http://www.teztour.com

ээ...

fx@freebsd71$ echo 'http://www.teztour.com/book/site/images/button_s.gif' | sed 's|^\(http://[^/]\+\)/.*|\1|'
http://www.teztour.com/book/site/images/button_s.gif

ЧЯДНТ?


"URL regex"
Отправлено SubGun , 16-Июл-09 13:25 
В BSD не работает.

"URL regex"
Отправлено phpcoder , 16-Июл-09 13:25 
>>coder@ubuntu ~ $ echo 'http://www.teztour.com/book/site/images/button_s.gif' | sed 's|^\(http://[^/]\+\)/.*|\1|'
>>http://www.teztour.com
>
>ээ...
>
>fx@freebsd71$ echo 'http://www.teztour.com/book/site/images/button_s.gif' | sed 's|^\(http://[^/]\+\)/.*|\1|'
>http://www.teztour.com/book/site/images/button_s.gif
>
>ЧЯДНТ?

Если не ошибаюсь, во FreeBSD нужен ключик -E

P.S. Опять же вылазит несовместимость между sed/awk и прочими утилитками в GNU и BSD. Поэтому либо писать на Перле, либо сразу говорить под какую ОС нужен скрипт.


"URL regex"
Отправлено SubGun , 16-Июл-09 13:27 
спс