View previous topic :: View next topic |
Author |
Message |
Vlad Postmaster
Joined: 07 Dec 2005 Posts: 111 Location: г.Благовещенск
|
Posted: 31 Aug 2009 7:29 (Mon) Post subject: CMS 2.07 beta 2 |
|
|
Как только скачал новую бетку сразу полез в Хелп, и немного не допонял.
На сайте сказано:
[!] Регулярные выражения в условиях сортировщика и антиспама. Если имя поля в условии начинается с символа "*", то строка рассматривается как регулярное выражение.
В хелпе:
Символы маски "*" и "?" не поддерживаются, данные символы рассматриваются как часть строки.
Думаю, что просто хелп не подправили.............
Но использовать пока сдерживаюсь до вашего ответа.
Заранее благодарю за разъяснение! |
|
Back to top |
|
|
PWL CMS Developer
Joined: 15 Oct 2005 Posts: 689
|
Posted: 31 Aug 2009 9:49 (Mon) Post subject: |
|
|
Хелп пока от версии 2.06 и будет готов только к релизу.
Пример использования регулярных выражений:
*Поле:"рег.выражение"
*Поле!:"рег.выражение" - с отрицанием результата |
|
Back to top |
|
|
Vlad Postmaster
Joined: 07 Dec 2005 Posts: 111 Location: г.Благовещенск
|
Posted: 31 Aug 2009 9:56 (Mon) Post subject: |
|
|
Спасибо за разъяснение, я же в другом виде это себе представил. |
|
Back to top |
|
|
GrAnd CMS Master
Joined: 21 Oct 2005 Posts: 766 Location: г. Коломна
|
Posted: 31 Aug 2009 14:07 (Mon) Post subject: |
|
|
А регулярные выражения в каком формате? _________________ Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец! |
|
Back to top |
|
|
GrAnd CMS Master
Joined: 21 Oct 2005 Posts: 766 Location: г. Коломна
|
Posted: 31 Aug 2009 15:19 (Mon) Post subject: |
|
|
И еще второй вопрос:
Если используется составное условие регулярных выражений, то "*" ставится перед каждым именем поля или только перед первым?
*Subject:"reg_exp1"|Subject:"reg_exp2"
или
*Subject:"reg_exp1"|*Subject:"reg_exp2" _________________ Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец! |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 31 Aug 2009 19:37 (Mon) Post subject: |
|
|
GrAnd wrote: | А регулярные выражения в каком формате? |
А какие вообще форматы бывают?
Сразу оговорюсь, что обработку регулярных выражений в CMS я сделал сам с "нуля". В плане синтаксиса ориентировался на упомянутую вами библиотеку TRegExpr и, в частности, прилагаемую к ней программу TestRExp.exe.
В плане синтаксиса регулярных выражений у меня сделано всё, что есть в той библиотеке, за исключением поддержки Юникода, "нежадных" повторителей, модификаторов и комментариев.
Заодно нашёл в той библиотеке (программе TestRExp.exe) несколько существенных ошибок, в частности, мгновенное "вылетание" программы при задании определённого выражения. В CMS, разумеется, такие выражения нормально работают.
Комментарии, кстати, можно задавать и сейчас в круглых скобках с нулевым повторением, т.е. "(комментарий){0}". Такие скобки (подвыражения) просто игнорируются.
Все примеры регулярных выражений, которые вы приводили на форуме, я опробовал, они нормально работают безо всякого редактирования.
GrAnd wrote: | Если используется составное условие регулярных выражений, то "*" ставится перед каждым именем поля или только перед первым? |
Перед каждым, т.е. так:
*Subject:"reg_exp1"|*Subject:"reg_exp2"
Это позволяет комбинировать регулярные выражения и обычные подстроки в одном условии. |
|
Back to top |
|
|
cheshirskycat Newbie
Joined: 19 Oct 2005 Posts: 2
|
Posted: 02 Sep 2009 9:46 (Wed) Post subject: Re: Новая версия CMS 2.07 beta 2 |
|
|
Что было с сайтом и форумом 1.09.2009? Ничего не работало, и сейчас ссылка на скачивание файла - битая! |
|
Back to top |
|
|
GrAnd CMS Master
Joined: 21 Oct 2005 Posts: 766 Location: г. Коломна
|
Posted: 02 Sep 2009 10:34 (Wed) Post subject: |
|
|
NAMOR wrote: | GrAnd wrote: | А регулярные выражения в каком формате? |
А какие вообще форматы бывают?
Сразу оговорюсь, что обработку регулярных выражений в 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 |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 02 Sep 2009 11:00 (Wed) Post subject: Re: Новая версия CMS 2.07 beta 2 |
|
|
cheshirskycat wrote: | Что было с сайтом и форумом 1.09.2009? Ничего не работало, и сейчас ссылка на скачивание файла - битая! |
У хостера "упал" сервер. Восстанавливают неторопливо. Сайт обновили не из последней резервной копии, потому и ссылка битая. На данный момент я даже на FTP-сервер зайти не могу, чтобы нормально обновить сайт.
Пока не восстановим всё, скачать CMS 2.07 beta 2 вы можете по ссылке: http://courierms.narod.ru/download/cms207b2.zip |
|
Back to top |
|
|
cheshirskycat Newbie
Joined: 19 Oct 2005 Posts: 2
|
Posted: 02 Sep 2009 11:25 (Wed) Post subject: Re: Новая версия CMS 2.07 beta 2 |
|
|
Спасибо за оперативность. А то почта офиса чуть не встала... |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 02 Sep 2009 12:07 (Wed) Post subject: |
|
|
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. |
Сразу хочется спросить: какого языка?
Какого-либо чёткого стандарта на регулярные выражения я не нашёл. Скорее всего, потому что его нет. Нигде нет ссылок на ни на один стандарт, ни в википедии, ни поисковиках, ни в программах использующих регулярные выражения. Поэтому я собирал "с миру по нитке", но, в основном, ориентировался на RegExpr. Если там есть совместимость с PCRE, то и в CMS появится. Регулярные выражения в CMS постепенно будут дорабатываться. Просто не всё сразу. Мы вообще не предполагали добавление регулярных выражений в эту версию, но мне стало интересно, смогу ли я сам их сделать
GrAnd wrote: | Кстати, а на каких примерах "спотыкалась" библиотека RegExpr? |
Все примеры я уже и не вспомню. Не было цели их фиксировать. Но вот пара примеров:
Выражение "(abc|a|b){1,2}c", строка "abc". Программа TestRExp.exe выводит ошибку и ничего не ищет. А должно найтись "abc".
С выражением "(a{0,1})*" и любой строкой пишет "Stack overflow", после второй попытки найти это же программа закрывается. |
|
Back to top |
|
|
GrAnd CMS Master
Joined: 21 Oct 2005 Posts: 766 Location: г. Коломна
|
Posted: 02 Sep 2009 13:46 (Wed) Post subject: |
|
|
NAMOR wrote: | Чтобы было срабатывание на эти строки, нужно исправить ошибку в выражении, а именно: взять фрагмент "[Ыы]|(bI)" в круглые скобки. После этого и в CMS и RegExpr эти строки полностью находятся. |
Да ... забыл уже синтаксис регулярных выражений.
А TI срабатывал нормально потому что я в нем "bI" транслитом не проверял. Я его уже позже в правило CMS добавил .
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 |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 02 Sep 2009 17:46 (Wed) Post subject: |
|
|
GrAnd wrote: | А разве первое выражение должно находить не строки abcc, abcabcc, aac, bbc?
А abc как раз не должно находить. |
Указанное выражение в строке "abc" должно находить именно "abc". По-моему, это очевидно. С одиночным повторением скобки ничего не найдётся, а с двойным - найдётся "a" (на первом повторении) и "b" (на втором повторении), а потом и "c" в конце совпадёт. Вот вам и "abc". Указанные вами строки, разумеется, тоже будут находиться.
GrAnd wrote: | А смысл второго выражения вообще ускользнул. То же самое сделает просто "a*", кажется. И без ошибок. А ошибка выдается потому что задается поиск бесконечного вхождения отсутствия символов. Как такое может быть? |
Смысла, возножно, в нём и немного, но корректная программа должна корректно обрабатывать любые выражения. А не вылетать с переполнением стека. Факт ошибки налицо, хоть есть смысл в том выражении, хоть нет. |
|
Back to top |
|
|
GrAnd CMS Master
Joined: 21 Oct 2005 Posts: 766 Location: г. Коломна
|
Posted: 02 Sep 2009 18:06 (Wed) Post subject: |
|
|
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 |
|
|
rombel Newbie
Joined: 02 Sep 2009 Posts: 1
|
Posted: 02 Sep 2009 18:13 (Wed) Post subject: |
|
|
Зравствуйте.
В этой версии в сортировщике пропала функция "Неотсортированные письма направлять по адресу". Как ее теперь задавать? Очень удобная опция была. |
|
Back to top |
|
|
|
|
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
|