Страница 1 из 1

banner.urls : pics.rbc.ru. Помогите создать pcre-правило!

Добавлено: Ср мар 17, 2010 4:22
pknw
Приветствую всех!

В banner.urls лежат ссылки на баннеры с pics.rbc.ru, но они содержат "звездочки", соответственно не будут работать в urls-листе. Хотя структура каталогов описана правильно: gif-файлы, лежащие в 4, 5 и 6 подкаталогах с произвольным именем. Пример: http://pics.rbc.ru/5ek/9fj7/y1/a3j/dgbh ... -180_2.gif

Правила из banner.urls:
pics.rbc.ru/*/*/*/*/*.gif
pics.rbc.ru/*/*/*/*/*/*.gif
pics.rbc.ru/*/*/*/*/*/*/*.gif

Как описать их pcre-правилом?
Помогите пожалуйста разобраться, я только учусь понимать и писать perl-выражения :)

Добавлено: Ср мар 17, 2010 11:56
Slava
pics\.rbc\.ru\/.+?\/.+?\/.+?\/.+?\/.+?\/.+?\/.+?\.gif$

здесь
.+ любая ненулевая последовательность символов
? модификатор, делающий .+ не жадной, иначе захватит несколько /
\. точка

для экспериментов удобно взять небольшую perl программу и на ней тестировать:

Код: Выделить всё

#!/usr/bin/perl -w

$a="http://pics.rbc.ru/5ek/9fj7/y1/a3j/dgbhdhhyhi/fjjejjfpmofk/180-180_2.gif";

if ($a=~/pics\.rbc\.ru\/.+?\/.+?\/.+?\/.+?\/.+?\/.+?\/.+?\.gif$/) {print "YES\n";}
else {print "NO\n";}

а что бы было понятно, что попадает под шаблон, заключите часть выражения в скобки и распечатайте:

Код: Выделить всё

if ($a=~/pics\.rbc\.ru\/(.+?)\/.+?\/.+?\/.+?\/.+?\/.+?\/.+?\.gif$/) {print "YES  $1\n";}