Примеры regexp правил для фильтрации ключевых слов

Все вопросы касающиеся скрипта ТДС и системы покупки трафика TS пишите сюда. Ответы на вопросы тоже сюда.

Модератор: Begemot

adre
Сообщения: 14
Зарегистрирован: Сб фев 03, 2007 9:50 am

Правила замещения

Сообщение adre » Сб фев 03, 2007 10:07 am

на основе примера из документации:
/play (poker|games|casino)/$1 online/
попробовал написать фильтр:
/(play|win|online) (poker|games|casino)/$2/
оказалось, что не работает, так как надо - заменяет строку "play games" на "$2" вместо "games"
пришлось разбивать на три строки
/play (poker|games|casino)/$1/
/win (poker|games|casino)/$1/
/online (poker|games|casino)/$1/

хотя первый вариант компактней.

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Begemot
Site Admin
Сообщения: 1145
Зарегистрирован: Вс май 01, 2005 3:20 pm

Сообщение Begemot » Сб фев 03, 2007 3:24 pm

вот так
/(?:play|win|online) (poker|games|casino)/$1/

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

adre
Сообщения: 14
Зарегистрирован: Сб фев 03, 2007 9:50 am

Сообщение adre » Вс фев 04, 2007 1:18 pm

/(?:buy|purchase|cheap) (caca|kaka)/$1/
возвращает в http header-e
Invalid regexp: (?:buy|purchase|cheap) (caca|kaka)
пробовал в перле, работают оба варианта
$s="buy cheap caca";
$s=~s/(?:buy).*?\s(caca)/$1/;
$s=~s/(buy).*?\s(caca)/$2/;
Первый вариант считается расширенным
Perl also defines a consistent extension syntax for features not found in standard tools like awk and lex. The syntax is a pair of parentheses with a question mark as the first thing within the parentheses. The character after the question mark indicates the extension.
ну а второй должен по идее везде работать.

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Begemot
Site Admin
Сообщения: 1145
Зарегистрирован: Вс май 01, 2005 3:20 pm

Сообщение Begemot » Вс фев 04, 2007 2:52 pm

хм, видимо в POSIX такой формат не работает, я позже посмотрю как это сделать там

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Begemot
Site Admin
Сообщения: 1145
Зарегистрирован: Вс май 01, 2005 3:20 pm

Сообщение Begemot » Вс фев 04, 2007 11:56 pm

похоже что "(?:" это расширение из PCRE, в POSIX такого нет :(
перловые регулярки PCRE я к сутре врядли прикручу - библиотека очень тяжелая для таких целей, поэтому нужно ждать пока я доделаю POSIX версию и полностью реализую замену $1 $2 .. $N на значения
Апдейт: это уже сделано в версии 2.8
Последний раз редактировалось Begemot Ср апр 11, 2007 11:07 am, всего редактировалось 1 раз.

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

adre
Сообщения: 14
Зарегистрирован: Сб фев 03, 2007 9:50 am

Сообщение adre » Пн фев 05, 2007 8:09 am

было бы неплохо, будем ждать апдейт. :-)

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Virtual
Сообщения: 2
Зарегистрирован: Пт апр 22, 2005 10:11 am
Контактная информация:

Сообщение Virtual » Вт апр 10, 2007 9:59 pm

Черт. Перекопал весь хелп не один раз - все вроде понятно. НО.
Ситуация такая:

на сутру трафик льется по урлам вида:

http://domain.com/in.cgi?10&pl=11&from=g&play=1

схема - весовая. на урлах стоит мануал фильтр, вида:
pl select и замена:
/11/1234/
/12/1212/
/15/1313/
/16/1515/
урл куда слать трафф имеет вид:
http://domain2.com/script.php?id=$pl

Собсно проблема в чем. Срабатывает замена - только на урле вида http://domain.com/in.cgi?10&pl=16&from=g&play=1
на всех остальных http://domain.com/in.cgi?10&pl=11&from=g&play=1 например - редиректит на default.cgi. т.е. в замене - нормально обрабатывается только(!!) последний вариант (в данном случае если pl=16). все остальное - сразу на дефолт.цги (не прописан урл дефолтовый)..

ума не приложу, где косяк?

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Virtual
Сообщения: 2
Зарегистрирован: Пт апр 22, 2005 10:11 am
Контактная информация:

Сообщение Virtual » Ср апр 11, 2007 11:41 am

темные электрические силы...
толи лыжи не едут, толи я...

вчера же, когда не работали эти правила и все шло на дефолт.цги - делаю копирование урлов из одной схемы в другую - скопировались только урлы... стоял фильтр по странам "селект страна." скопировалась только страна.. селект не выставился.. стоял фильтр по уникам - он вообще не скопировался.. %)

сегодня утром все чудесным образом начало работать как и должно было.. ума не приложу, что за аномалии...

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Zulu
Сообщения: 19
Зарегистрирован: Чт июн 01, 2006 2:17 pm

Сообщение Zulu » Чт апр 12, 2007 7:30 am

ставлю в фильтр по параметру например вот такое выражение: \w\d отправляю в него a1 - не фильтрует, а отсылает на дефолтовый урл. где неправильно ? или что то не работает ?

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Begemot
Site Admin
Сообщения: 1145
Зарегистрирован: Вс май 01, 2005 3:20 pm

Сообщение Begemot » Чт апр 12, 2007 8:26 pm

Zulu а где // ?

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Zulu
Сообщения: 19
Зарегистрирован: Чт июн 01, 2006 2:17 pm

Сообщение Zulu » Пт апр 13, 2007 7:52 am

где // ?

где это должно быть ? в правилах регулярок этого нет
регулярка типа: \w\d имеет обычный вид как есть

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Begemot
Site Admin
Сообщения: 1145
Зарегистрирован: Вс май 01, 2005 3:20 pm

Сообщение Begemot » Пт апр 13, 2007 8:13 am

Zulu регулярка имеет начало и конец :)
/ -начало / -конец например
в сутре так

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Zulu
Сообщения: 19
Зарегистрирован: Чт июн 01, 2006 2:17 pm

Сообщение Zulu » Пт апр 13, 2007 11:47 am

хм, это в сутре так, но не в регулярках ;)
правила составления регулярок отличаются от тех которые ты используешь в сутре, поэтому особенности нужно сразу отображать в доке.

этот пример: \w\d первый выбирает все подряд, второй только цифры
если сделать так /\w\d\/ то тоже не работает, задача пропускать только то что нужно в регулярке

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

panter
Сообщения: 4
Зарегистрирован: Чт мар 15, 2007 12:37 pm

Сообщение panter » Пт апр 13, 2007 2:51 pm

/\w\d\/ .... а так /\w\d/

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Zulu
Сообщения: 19
Зарегистрирован: Чт июн 01, 2006 2:17 pm

Сообщение Zulu » Пт апр 13, 2007 8:30 pm

вот именно так и делал /\w\d/

просто в топике ошибся на один слеш, не работает все равно !

Ссылка:
BBcode:
HTML:
Скрыть ссылки на пост
Показать ссылки на пост

Ответить