Использование регулярных выражений в шаблонах |
Наверх Предыдущий Следующий |
The Bat! позволяет использовать регулярные выражения в шаблонах для ваших писем. С их помощью вы сможете искать любые строки в заданном тексте и добавлять результаты поиска в тело письма. К примеру, можно обработать входящее сообщение (убрать / добавить / изменить его содержимое) и создать новое письмо на его основе.
Чтобы найти необходимую вам строчку в тексте исходного письма, используйте конструкцию %REGEXPTEXT="регулярное выражение". %REGEXPQUOTES="регулярное выражение" работает аналогичным образом, однако результат возвращается в виде цитаты.
Чтобы найти необходимое слово или строчку в любом тексте, используйте сочетание %SETPATTREGEXP="выражение" и %REGEXPMATCH="область для поиска". И не забывайте о великолепном наборе макросов. Используйте их в паре с регулярными выражениями. Пример: %QUOTES="%SETREGEXP=""выражение""%REGEXPMATCH=""%TEXT""" (работает аналогично конструкции %REGEXPQUOTES="выражение").
Если соответствие найдено, The Bat! возвращает результаты поиска. Если условие содержит несколько шаблонов, разделенных круглыми скобками, результатом будет соответствие первому из них. К примеру, если задано регулярное выражение Годовой баланс: *(\S+) , программа найдет в тексте любое слово после сочетания Годовой баланс.
%REGEXPBLINDMATCH="строка" Работает аналогично конструкции %REGEXPMATCH="строка", но результаты поиска не вставляются в тело письма, а сохраняются в специальной внутренней переменной. Затем их можно извлечь при помощи макроса %SUBPATT="n", где n - порядковый номер найденной подстроки (если n=0, то %SUBPATT возвращает результат работы всего регулярного выражения). Таким образом, %REGEXPBLINDMATCH позволяет найти в тексте сразу несколько строк: %QUOTES="%SETPATTREGEXP=""цена_покупки +(\S+).*марка_товара +(\S+)""%REGEXPBLINDMATCH=""%TEXT""С вас %SUBPATT=""1"" за %SUBPATT=""2"""
По умолчанию, регулярные выражения в шаблонах используют параметры PCRE_MULTILINE (область поиска из нескольких строк), PCRE_CASELESS (поиск без учета регистра) и PCRE_DOTALL (игнорировать символ конца строки). Каждое письмо расценивается как одна строка, а сочетание CF/LF (0D/0A) заменяется на символ LF (0A).
Смотрите также: Базовый синтаксис регулярных выражений |