Courier Mail Server Forum Index Courier Mail Server
www.courierms.ru
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CMS 2.07 beta 2
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Courier Mail Server 2.xx
View previous topic :: View next topic  
Author Message
Vlad
Postmaster
Postmaster


Joined: 07 Dec 2005
Posts: 111
Location: г.Благовещенск

PostPosted: 31 Aug 2009 7:29 (Mon)    Post subject: CMS 2.07 beta 2 Reply with quote

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

На сайте сказано:
[!] Регулярные выражения в условиях сортировщика и антиспама. Если имя поля в условии начинается с символа "*", то строка рассматривается как регулярное выражение.
В хелпе:
Символы маски "*" и "?" не поддерживаются, данные символы рассматриваются как часть строки.

Думаю, что просто хелп не подправили.............
Но использовать пока сдерживаюсь до вашего ответа.

Заранее благодарю за разъяснение!
Back to top
View user's profile Send private message Visit poster's website
PWL
CMS Developer
CMS Developer


Joined: 15 Oct 2005
Posts: 689

PostPosted: 31 Aug 2009 9:49 (Mon)    Post subject: Reply with quote

Хелп пока от версии 2.06 и будет готов только к релизу.
Пример использования регулярных выражений:
*Поле:"рег.выражение"
*Поле!:"рег.выражение" - с отрицанием результата
Back to top
View user's profile Send private message
Vlad
Postmaster
Postmaster


Joined: 07 Dec 2005
Posts: 111
Location: г.Благовещенск

PostPosted: 31 Aug 2009 9:56 (Mon)    Post subject: Reply with quote

Спасибо за разъяснение, я же в другом виде это себе представил.
Back to top
View user's profile Send private message Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 31 Aug 2009 14:07 (Mon)    Post subject: Reply with quote

А регулярные выражения в каком формате?
_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 31 Aug 2009 15:19 (Mon)    Post subject: Reply with quote

И еще второй вопрос:

Если используется составное условие регулярных выражений, то "*" ставится перед каждым именем поля или только перед первым?

*Subject:"reg_exp1"|Subject:"reg_exp2"
или
*Subject:"reg_exp1"|*Subject:"reg_exp2"

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 31 Aug 2009 19:37 (Mon)    Post subject: Reply with quote

GrAnd wrote:
А регулярные выражения в каком формате?

А какие вообще форматы бывают? Smile
Сразу оговорюсь, что обработку регулярных выражений в CMS я сделал сам с "нуля". В плане синтаксиса ориентировался на упомянутую вами библиотеку TRegExpr и, в частности, прилагаемую к ней программу TestRExp.exe.
В плане синтаксиса регулярных выражений у меня сделано всё, что есть в той библиотеке, за исключением поддержки Юникода, "нежадных" повторителей, модификаторов и комментариев.
Заодно нашёл в той библиотеке (программе TestRExp.exe) несколько существенных ошибок, в частности, мгновенное "вылетание" программы при задании определённого выражения. В CMS, разумеется, такие выражения нормально работают.

Комментарии, кстати, можно задавать и сейчас в круглых скобках с нулевым повторением, т.е. "(комментарий){0}". Такие скобки (подвыражения) просто игнорируются.

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

GrAnd wrote:
Если используется составное условие регулярных выражений, то "*" ставится перед каждым именем поля или только перед первым?

Перед каждым, т.е. так:
*Subject:"reg_exp1"|*Subject:"reg_exp2"
Это позволяет комбинировать регулярные выражения и обычные подстроки в одном условии.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
cheshirskycat
Newbie
Newbie


Joined: 19 Oct 2005
Posts: 2

PostPosted: 02 Sep 2009 9:46 (Wed)    Post subject: Re: Новая версия CMS 2.07 beta 2 Reply with quote

Что было с сайтом и форумом 1.09.2009? Ничего не работало, и сейчас ссылка на скачивание файла - битая!
Back to top
View user's profile Send private message
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 02 Sep 2009 10:34 (Wed)    Post subject: Reply with quote

NAMOR wrote:
GrAnd wrote:
А регулярные выражения в каком формате?

А какие вообще форматы бывают? Smile
Сразу оговорюсь, что обработку регулярных выражений в CMS я сделал сам с "нуля". В плане синтаксиса ориентировался на упомянутую вами библиотеку TRegExpr и, в частности, прилагаемую к ней программу TestRExp.exe.
В плане синтаксиса регулярных выражений у меня сделано всё, что есть в той библиотеке, за исключением поддержки Юникода, "нежадных" повторителей, модификаторов и комментариев.
Заодно нашёл в той библиотеке (программе TestRExp.exe) несколько существенных ошибок, в частности, мгновенное "вылетание" программы при задании определённого выражения. В CMS, разумеется, такие выражения нормально работают.


Это конечно здорово ...
Но вот попытался я фильтровать слова, содержащие "ссыл" (ну "рассылки", например).
Пишу правило *Subject:"ссыл" - по теме, содержащей "рассылка" работает, а по "РАССЫЛКА" - нет.
Ставлю модификатор: *Subject:"(?i)ссыл" - перестает отравливать и "Рассылки" и "РАССЫЛКИ" - модификаторы, действительно, не работают.
И как же отфильтровывать письма, содержащие различные комбинации прописных и строчных символов?

Пытаюсь обойтись без модификаторов, но с учетом транслита и возможных символов, вставленных между буквами для разрядки (в т.ч. и пробела):

*Subject:"[PpРр]([ \.!#\*,:;^\+_-]*)[Aa@Аа]\1[CcСс]\1[CcСс]\1[Ыы]|(bI)\1[Лл]\1[KkКк]\1[Aa@АаИи]"

Проверяю в Traffic Inspector - там есть возможность проверить как срабатывают фильтры на определенную строку. Все нормально. Срабатывает на Р_А_С_С_Ы_Л_К_А, Р^@^С^С^bI^Л^К^И и другие варианты на "ура".
Подставляю это выражение в CMS - не работает!!! Это из-за нежадного повторителя "*"? А что же делать? Как же без этого?

А формат определяется синтаксисом языка. Наиболее распространены сейчас POSIX ERE и PCRE.

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

Кстати, а на каких примерах "спотыкалась" библиотека RegExpr?

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Sep 2009 11:00 (Wed)    Post subject: Re: Новая версия CMS 2.07 beta 2 Reply with quote

cheshirskycat wrote:
Что было с сайтом и форумом 1.09.2009? Ничего не работало, и сейчас ссылка на скачивание файла - битая!

У хостера "упал" сервер. Восстанавливают неторопливо. Сайт обновили не из последней резервной копии, потому и ссылка битая. На данный момент я даже на FTP-сервер зайти не могу, чтобы нормально обновить сайт.

Пока не восстановим всё, скачать CMS 2.07 beta 2 вы можете по ссылке: http://courierms.narod.ru/download/cms207b2.zip
Back to top
View user's profile Send private message Send e-mail Visit poster's website
cheshirskycat
Newbie
Newbie


Joined: 19 Oct 2005
Posts: 2

PostPosted: 02 Sep 2009 11:25 (Wed)    Post subject: Re: Новая версия CMS 2.07 beta 2 Reply with quote

NAMOR wrote:

Пока не восстановим всё, скачать CMS 2.07 beta 2 вы можете по ссылке: http://courierms.narod.ru/download/cms207b2.zip

Спасибо за оперативность. А то почта офиса чуть не встала...
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Sep 2009 12:07 (Wed)    Post subject: Reply with quote

GrAnd wrote:
Это конечно здорово ...
Но вот попытался я фильтровать слова, содержащие "ссыл" (ну "рассылки", например).
Пишу правило *Subject:"ссыл" - по теме, содержащей "рассылка" работает, а по "РАССЫЛКА" - нет.

Да, проверки - регистрозависимые. Модификаторы, как я писал, не реализованы, а сами проверки регистрозависимые и в RegExpr, если не используются модификаторы.

GrAnd wrote:
Ставлю модификатор: *Subject:"(?i)ссыл" - перестает отравливать и "Рассылки" и "РАССЫЛКИ" - модификаторы, действительно, не работают.

Да, поддержки модификаторов нет.

GrAnd wrote:
И как же отфильтровывать письма, содержащие различные комбинации прописных и строчных символов?

Да, тут есть определённая проблема. Придётся делать, например, так: *Subject:"[сС][сС][ыЫ][лЛ]". Но для простого поиска подстрок проще не использовать регулярное выражение, т.е. делать так: Subject:"ссыл". Простой поиск подстрок - регистронезависимый.

GrAnd wrote:
Пытаюсь обойтись без модификаторов, но с учетом транслита и возможных символов, вставленных между буквами для разрядки (в т.ч. и пробела):

*Subject:"[PpРр]([ \.!#\*,:;^\+_-]*)[Aa@Аа]\1[CcСс]\1[CcСс]\1[Ыы]|(bI)\1[Лл]\1[KkКк]\1[Aa@АаИи]"

Проверяю в Traffic Inspector - там есть возможность проверить как срабатывают фильтры на определенную строку. Все нормально. Срабатывает на Р_А_С_С_Ы_Л_К_А, Р^@^С^С^bI^Л^К^И и другие варианты на "ура".
Подставляю это выражение в CMS - не работает!!! Это из-за нежадного повторителя "*"? А что же делать? Как же без этого?

Указанное правило в строке "Р_А_С_С_Ы_Л_К_А" находит только "Р_А_С_С_Ы", а в строке "Р^@^С^С^bI^Л^К^И" не находит ничего. Причём не только в CMS, но и в RegExpr.
Чтобы было срабатывание на эти строки, нужно исправить ошибку в выражении, а именно: взять фрагмент "[Ыы]|(bI)" в круглые скобки. После этого и в CMS и RegExpr эти строки полностью находятся.
Так что дело не в повторителе, да и повторитель "*" - "жадный" (т.е. поддерживается CMS). Его "нежадная" версия - "*?".

GrAnd wrote:
А формат определяется синтаксисом языка. Наиболее распространены сейчас POSIX ERE и PCRE.

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

Сразу хочется спросить: какого языка? Smile
Какого-либо чёткого стандарта на регулярные выражения я не нашёл. Скорее всего, потому что его нет. Нигде нет ссылок на ни на один стандарт, ни в википедии, ни поисковиках, ни в программах использующих регулярные выражения. Поэтому я собирал "с миру по нитке", но, в основном, ориентировался на RegExpr. Если там есть совместимость с PCRE, то и в CMS появится. Регулярные выражения в CMS постепенно будут дорабатываться. Просто не всё сразу. Мы вообще не предполагали добавление регулярных выражений в эту версию, но мне стало интересно, смогу ли я сам их сделать Smile

GrAnd wrote:
Кстати, а на каких примерах "спотыкалась" библиотека RegExpr?

Все примеры я уже и не вспомню. Не было цели их фиксировать. Но вот пара примеров:
Выражение "(abc|a|b){1,2}c", строка "abc". Программа TestRExp.exe выводит ошибку и ничего не ищет. А должно найтись "abc".
С выражением "(a{0,1})*" и любой строкой пишет "Stack overflow", после второй попытки найти это же программа закрывается.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 02 Sep 2009 13:46 (Wed)    Post subject: Reply with quote

NAMOR wrote:
Чтобы было срабатывание на эти строки, нужно исправить ошибку в выражении, а именно: взять фрагмент "[Ыы]|(bI)" в круглые скобки. После этого и в CMS и RegExpr эти строки полностью находятся.

Да ... забыл уже синтаксис регулярных выражений.
А TI срабатывал нормально потому что я в нем "bI" транслитом не проверял. Я его уже позже в правило CMS добавил Smile.

NAMOR wrote:
Если там есть совместимость с PCRE, то и в CMS появится.

Да как раз в RegExpr, кажется, декларируется полная совместимость с PCRE.

NAMOR wrote:
Выражение "(abc|a|b){1,2}c", строка "abc". Программа TestRExp.exe выводит ошибку и ничего не ищет. А должно найтись "abc".
С выражением "(a{0,1})*" и любой строкой пишет "Stack overflow", после второй попытки найти это же программа закрывается.

А разве первое выражение должно находить не строки abcc, abcabcc, aac, bbc?
А abc как раз не должно находить.

А смысл второго выражения вообще ускользнул. То же самое сделает просто "a*", кажется. И без ошибок. А ошибка выдается потому что задается поиск бесконечного вхождения отсутствия символов. Как такое может быть?

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Sep 2009 17:46 (Wed)    Post subject: Reply with quote

GrAnd wrote:
А разве первое выражение должно находить не строки abcc, abcabcc, aac, bbc?
А abc как раз не должно находить.

Указанное выражение в строке "abc" должно находить именно "abc". По-моему, это очевидно. С одиночным повторением скобки ничего не найдётся, а с двойным - найдётся "a" (на первом повторении) и "b" (на втором повторении), а потом и "c" в конце совпадёт. Вот вам и "abc". Указанные вами строки, разумеется, тоже будут находиться.

GrAnd wrote:
А смысл второго выражения вообще ускользнул. То же самое сделает просто "a*", кажется. И без ошибок. А ошибка выдается потому что задается поиск бесконечного вхождения отсутствия символов. Как такое может быть?

Смысла, возножно, в нём и немного, но корректная программа должна корректно обрабатывать любые выражения. А не вылетать с переполнением стека. Факт ошибки налицо, хоть есть смысл в том выражении, хоть нет.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 02 Sep 2009 18:06 (Wed)    Post subject: Reply with quote

NAMOR wrote:
Указанное выражение в строке "abc" должно находить именно "abc". По-моему, это очевидно. С одиночным повторением скобки ничего не найдётся, а с двойным - найдётся "a" (на первом повторении) и "b" (на втором повторении), а потом и "c" в конце совпадёт. Вот вам и "abc".

Может быть, может быть. Но я считал, что это не надо трактовать как
Quote:
найдётся "a" (на первом повторении) и "b" (на втором повторении)

а следует трактовать как раз как,
Quote:
если на первом повторении было найдено "а", то и на втором следует искать "а", а если на первом повторении найдено "б", то "б" следует искать и на втором повторении.

Т.е. выражение "(abc|a|b){1,2}c" эквивалентно примерно такому:
"(abc|a|b)\1?c".
В таком случае, который мне кажется более логичным, будут находится только указанные 4 строки, а "abc" находится не должно.

NAMOR wrote:
Смысла, возножно, в нём и немного, но корректная программа должна корректно обрабатывать любые выражения. А не вылетать с переполнением стека. Факт ошибки налицо, хоть есть смысл в том выражении, хоть нет.

Ну это да. Принцип Майерса:
Quote:
Любая программа должна делать то, что должна, и не должна делать того, что не должна.

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
rombel
Newbie
Newbie


Joined: 02 Sep 2009
Posts: 1

PostPosted: 02 Sep 2009 18:13 (Wed)    Post subject: Reply with quote

Зравствуйте.
В этой версии в сортировщике пропала функция "Неотсортированные письма направлять по адресу". Как ее теперь задавать? Очень удобная опция была.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Courier Mail Server 2.xx All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group