Использование регулярных выражений в шаблонах

Наверх  Предыдущий  Следующий

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).

 

 

Смотрите также:

Базовый синтаксис регулярных выражений

Расширенный синтаксис регулярных выражений

Макросы

Шаблоны