Примеры regexp правил для фильтрации ключевых слов
Модератор: Begemot
Правила замещения
на основе примера из документации:
/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/
хотя первый вариант компактней.
/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: | |
Скрыть ссылки на пост |
/(?: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.
ну а второй должен по идее везде работать.
возвращает в 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: | |
Скрыть ссылки на пост |
хм, видимо в POSIX такой формат не работает, я позже посмотрю как это сделать там
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
похоже что "(?:" это расширение из PCRE, в POSIX такого нет 
перловые регулярки PCRE я к сутре врядли прикручу - библиотека очень тяжелая для таких целей, поэтому нужно ждать пока я доделаю POSIX версию и полностью реализую замену $1 $2 .. $N на значения
Апдейт: это уже сделано в версии 2.8

перловые регулярки PCRE я к сутре врядли прикручу - библиотека очень тяжелая для таких целей, поэтому нужно ждать пока я доделаю POSIX версию и полностью реализую замену $1 $2 .. $N на значения
Апдейт: это уже сделано в версии 2.8
Последний раз редактировалось Begemot Ср апр 11, 2007 11:07 am, всего редактировалось 1 раз.
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
Черт. Перекопал весь хелп не один раз - все вроде понятно. НО.
Ситуация такая:
на сутру трафик льется по урлам вида:
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). все остальное - сразу на дефолт.цги (не прописан урл дефолтовый)..
ума не приложу, где косяк?
Ситуация такая:
на сутру трафик льется по урлам вида:
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: | |
Скрыть ссылки на пост |
темные электрические силы...
толи лыжи не едут, толи я...
вчера же, когда не работали эти правила и все шло на дефолт.цги - делаю копирование урлов из одной схемы в другую - скопировались только урлы... стоял фильтр по странам "селект страна." скопировалась только страна.. селект не выставился.. стоял фильтр по уникам - он вообще не скопировался.. %)
сегодня утром все чудесным образом начало работать как и должно было.. ума не приложу, что за аномалии...
толи лыжи не едут, толи я...
вчера же, когда не работали эти правила и все шло на дефолт.цги - делаю копирование урлов из одной схемы в другую - скопировались только урлы... стоял фильтр по странам "селект страна." скопировалась только страна.. селект не выставился.. стоял фильтр по уникам - он вообще не скопировался.. %)
сегодня утром все чудесным образом начало работать как и должно было.. ума не приложу, что за аномалии...
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
ставлю в фильтр по параметру например вот такое выражение: \w\d отправляю в него a1 - не фильтрует, а отсылает на дефолтовый урл. где неправильно ? или что то не работает ?
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
где // ?
где это должно быть ? в правилах регулярок этого нет
регулярка типа: \w\d имеет обычный вид как есть
где это должно быть ? в правилах регулярок этого нет
регулярка типа: \w\d имеет обычный вид как есть
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
Zulu регулярка имеет начало и конец 
/ -начало / -конец например
в сутре так

/ -начало / -конец например
в сутре так
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
хм, это в сутре так, но не в регулярках 
правила составления регулярок отличаются от тех которые ты используешь в сутре, поэтому особенности нужно сразу отображать в доке.
этот пример: \w\d первый выбирает все подряд, второй только цифры
если сделать так /\w\d\/ то тоже не работает, задача пропускать только то что нужно в регулярке

правила составления регулярок отличаются от тех которые ты используешь в сутре, поэтому особенности нужно сразу отображать в доке.
этот пример: \w\d первый выбирает все подряд, второй только цифры
если сделать так /\w\d\/ то тоже не работает, задача пропускать только то что нужно в регулярке
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |
вот именно так и делал /\w\d/
просто в топике ошибся на один слеш, не работает все равно !
просто в топике ошибся на один слеш, не работает все равно !
Ссылка: | |
BBcode: | |
HTML: | |
Скрыть ссылки на пост |