Показано с 11 по 20 из 20

Тема: Определение количества адресатов в Сортировщике…

  1. #11
    AKazak
    AKazak вне форума
    Участник Аватар для AKazak
    Регистрация
    08.09.2005
    Сообщений
    74

    Re: Определение количества адресатов в Сортировщике…

    Пробую привязаться к количеству символов "@" (так, вроде бы, более логично):

    проверка на 1 адресата осуществляется (вроде бы) так:
    _________________________________________________
    Поле заголовка To соответствует \A[^@]+@[^@]+\Z
    _________________________________________________

    проверка на 2 адресата осуществляется (вроде бы) так:
    _________________________________________________
    Поле заголовка To соответствует \A[^@]+@[^@]+@[^@]+\Z
    _________________________________________________

    проверка на 3 адресата осуществляется (вроде бы) так:
    _________________________________________________
    Поле заголовка To соответствует \A[^@]+@[^@]+@[^@]+@[^@]+\Z
    _________________________________________________

    и т. д.

    Однако и этот метод тоже не работает!
    Похоже фильтры исходящей почты на regex'ы не реагируют…
    :-[

  2. #12
    kwn
    kwn вне форума
    Участник
    Регистрация
    19.04.2005
    Сообщений
    48

    Re: Определение количества адресатов в Сортировщике…

    На мой взгляд, у вас неправильно составлены регекспы.
    Проверка на список адресатов у меня в фильтрах сделана по другому
    (\<?(.+?\@.+?)\>?\,\s)+?
    Это на список от одного адресата и больше. Соответственно просто для одного адресата \<?(.+?\@.+?)\>?
    Символ начала и конца строки я не использую.
    Для выражения любого символа я использую точку (.)

  3. #13
    aff
    aff вне форума
    Участник
    Регистрация
    07.08.2003
    Сообщений
    1,376

    Re: Определение количества адресатов в Сортировщике…

    а с точками не всегда угадаешь в зависимости от того включена жадность или нет.
    в сортировщике вообще жадность включена по умолчанию или выключена?

    >Похоже фильтры исходящей почты на regex'ы не реагируют…
    а они же работают и для входящих… ?

  4. #14
    kwn
    kwn вне форума
    Участник
    Регистрация
    19.04.2005
    Сообщений
    48

    Re: Определение количества адресатов в Сортировщике…

    Для борьбы с жадностью я ставлю после квантификатора (+) знак вопроса.
    Включена жадность в сортировщике или нет, честно говоря, не знаю.

  5. #15
    AKazak
    AKazak вне форума
    Участник Аватар для AKazak
    Регистрация
    08.09.2005
    Сообщений
    74

    Re: Определение количества адресатов в Сортировщике…

    Цитата Сообщение от kwn
    На мой взгляд, у вас неправильно составлены регекспы.
    Поясните пожалуйста, что именно не привильно?

    Цитата Сообщение от kwn
    (\<?(.+?\@.+?)\>?\,\s)+?
    Это на список от одного адресата и больше. Соответственно просто для одного адресата \<?(.+?\@.+?)\>?
    Что означает символ \ (за исключением сочетания \s)?
    Кстати на этот пример RegexBuddy с указанием библиотеки PCRE сказал буквально следующее:

    _________________________________________________
    (\<?(.+?\@.+?)\>?\,\s)+?

    Match the regular expression below and capture its match into backreference number 1 «(\<?(.+?\@.+?)\>?\,\s)+?»
    Between one and unlimited times, as few times as possible, expanding as needed (lazy) «+?»
    Note: You repeated the capturing group itself. The group will capture only the last iteration. Put a capturing group around the repeated group to capture all iterations. «+?»
    The PCRE library does not support word boundaries that match specifically at the start or end of a word «\<»
    Quantifiers must be preceded by a token that can be repeated «?»

    Match the regular expression below and capture its match into backreference number 2 «(.+?\@.+?)»
    Match any single character that is not a line break character «.+?»
    Between one and unlimited times, as few times as possible, expanding as needed (lazy) «+?»
    Match the character “@” literally «\@»
    Match any single character that is not a line break character «.+?»
    Between one and unlimited times, as few times as possible, expanding as needed (lazy) «+?»
    The PCRE library does not support word boundaries that match specifically at the start or end of a word «\>»
    Quantifiers must be preceded by a token that can be repeated «?»

    Match the character “,” literally «\,»
    Match a single character that is a “whitespace character” (spaces, tabs, line breaks, etc.) «\s»
    _________________________________________________

    Цитата Сообщение от aff
    >Похоже фильтры исходящей почты на regex'ы не реагируют…
    а они же работают и для входящих… ?
    Это вопрос или утверждение? Я для входящих ни разу не провобовал…

  6. #16
    kwn
    kwn вне форума
    Участник
    Регистрация
    19.04.2005
    Сообщений
    48

    Re: Определение количества адресатов в Сортировщике…

    Похоже aff прав, говоря о жадности точки как символа любого знака. Реально, приведенный мной регексп (\<?(.+?\@.+?)\>?) может работать только для списков адресов, что собственно я и использую в своем фильтре.
    Для выражения единственного адреса можно, в принципе, использовать следующий регексп:
    ("?[\w\.]+"?\s)*(\<?[\w\.]+@[\w\.]+\>?)
    где ("?[\w\.]+"?\s)* отражает возможное присутствие имени перед адресом.
    Символ \ отражает конкретность стоящего за ним символа (\. - именно точка, а не любой символ; \< - именно символ < , но \w - любой алфавитноцифровой символ)

  7. #17
    AKazak
    AKazak вне форума
    Участник Аватар для AKazak
    Регистрация
    08.09.2005
    Сообщений
    74

    Re: Определение количества адресатов в Сортировщике…

    Несмотря на задержки с ответами от разработчиков на официальном IssueTracker'е (https://www.ritlabs.com/bt/view.php?id=6933) опытным путем удалось установить следующие выражения для определения количества адресатов письмо по полю заголовка To:

    проверка на 1 адресата осуществляется так:
    _________________________________________________
    Поле заголовка To соответствует \A[^@][^@]*@[^@]*[^@]\Z
    _________________________________________________

    проверка на 2 адресата осуществляется так:
    _________________________________________________
    Поле заголовка To соответствует \A[^@][^@]*@[^@]+@[^@]*[^@]\Z
    _________________________________________________

    проверка на 3 адресата осуществляется так:
    _________________________________________________
    Поле заголовка To соответствует \A[^@][^@]*@[^@]+@[^@]+@[^@]*[^@]\Z
    _________________________________________________

    и т. д.

    Тестируйте…
    Если интересно, расскажу свои мысли о том почему именно так…

  8. #18
    aff
    aff вне форума
    Участник
    Регистрация
    07.08.2003
    Сообщений
    1,376

    Re: Определение количества адресатов в Сортировщике…

    ммм… и почему именно так ?

  9. #19
    kwn
    kwn вне форума
    Участник
    Регистрация
    19.04.2005
    Сообщений
    48

    Re: Определение количества адресатов в Сортировщике…

    В принципе все понятно, это действительно должно работать. Есть некоторые вопросы: Вы используете [^@] как любой символ, кроме @, однако в почтовом адресе, насколько я помню, допускается использование не любых символов, а алфавитноцифровых плюс некоторые знаки (может я и не прав). Поэтому, на мой взгляд, лучше использовать выражение [\w\.\-], которое существенно ограничивает перебор вариантов и увеличивает соответственно скорость обработки. Выражение [^@][^@]* на мой взгляд то же самое, что [^@]+, хотя и Ваш вариант тоже должен работать.

  10. #20
    AKazak
    AKazak вне форума
    Участник Аватар для AKazak
    Регистрация
    08.09.2005
    Сообщений
    74

    Re: Определение количества адресатов в Сортировщике…

    Цитата Сообщение от kwn
    Вы используете [^@] как любой символ, кроме @, однако в почтовом адресе, насколько я помню, допускается использование не любых символов, а алфавитноцифровых плюс некоторые знаки (может я и не прав). Поэтому, на мой взгляд, лучше использовать выражение [\w\.\-], которое существенно ограничивает перебор вариантов и увеличивает соответственно скорость обработки.
    Да вы правы в адресе допустимы не все символы. Однако, если вы пишете с помощью The Bat! , то ваш адрес будет с вероятностью 99% правильными!
    Если серьезно, если я понял правильно принцип работы движка обработки regex'ов, то при разборе строки он работает с каждым символом по отдельности, сравнивая его с regex'ом. Поэтому что будет быстрее: проверить что текущий символ НЕ является @, или проверить что текущий символ не является \w или \. или \- для меня до сих пор остается под вопросом…

    Цитата Сообщение от kwn
    Выражение [^@][^@]* на мой взгляд то же самое, что [^@]+, хотя и Ваш вариант тоже должен работать.
    Так то оно так…
    Только вот при использовании с якорями \A и \Z, вопреки правилам, в The Bat! есть нюанс:

    По правилам, выражение \A[^@]+ должно соответствовать строке символов, НЕ являющихся @, и один из этих символов должен быть в начале строки.

    По моему опыту, The Bat! воспринимает выражение \A[^@]+ как строку символов, НЕ являющихся @, и каждый из этих символов должен быть в начале строки.

    Поэтому приходится изворачиваться так: \A[^@][^@]*

    _________________________________________________
    Кстати, если уж пошел разговор про тюннинг regex'ом, то в вашем варианте нужно доработать следущий момент:

    согласно http://www.regular-expressions.info/brackets.html

    () - это обратная ссылка с занесение результата в память;
    (?:) - это просто пара круглых скобок для группирования элементов regex'ом (в память ничего не заносится).

    Для использования в фильтрах - второй вариант предпочтительней.


Похожие темы

  1. Макросы в сортировщике
    от XYZ в разделе The Bat!: вопросы и ответы
    Ответов: 1
    Последнее сообщение: 11.01.2006, 18:45
  2. GMAIL - POP: Запрос количества писем… и все
    от Vitay в разделе The Bat!: вопросы и ответы
    Ответов: 1
    Последнее сообщение: 21.02.2005, 09:20
  3. Список разных адресатов.
    от pettr в разделе The Bat!: вопросы и ответы
    Ответов: 3
    Последнее сообщение: 24.11.2004, 13:22
  4. Автоматическое определение характерного множества
    от Splinty в разделе The Bat!: вопросы и ответы
    Ответов: 2
    Последнее сообщение: 21.10.2004, 09:13
  5. Разные шаблоны для разного количества адресатов
    от Maximka в разделе The Bat!: вопросы и ответы
    Ответов: 6
    Последнее сообщение: 10.06.2004, 14:25