Для просмотра этого сайта включите поддуржку JavaScript.

MDaemon Email Server 25.0

Навигация: Меню "Безопасность" > Фильтр содержания и АнтиВирус > Редактор Фильтров содержания > Правила

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

Прокрутить Назад Начало Далее Больше

Система фильтрации содержания поддерживает поиск с помощью "регулярных выражений", что дает очень широкие возможности и позволяет искать не только текстовые строки, но и так называемые текстовые "паттерны" (patterns).. Регулярные выражения содержат комбинацию обычного текста и специальных символов, которые показывают, как выполнять сравнение, и могут сделать ваши правила Фильтра содержания более мощными и целенаправленными.

Что такое регулярные выражения?

Регулярное выражение (regexp - regular expression) – это текстовый шаблон, состоящий из комбинации специальных символов, которые еще называют метасимволами(metacharacters), и буквенно-цифровых текстовых символов, или "литеры" (abc, 123 и т.д.). Шаблон используется для сравнения текстовых строк: результат сравнения будет либо успешным, либо нет. Регулярные выражения используются в основном для поиска и замены повторяющихся фрагментов текста.

Метасимволы – это специальные символы, имеющие особые функции и используемые внутри регулярных выражений. Реализация механизма регулярных выражений в системе фильтрации содержания MDaemon допускает следующие метасимволы:

\ | () [] ^ $ * + ? . <>

Метасимвол

Описание

\

При использовании перед метасимволом обратная косая ("\") заставляет обрабатывать этот метасимвол как литеру. Это необходимо, если вы хотите искать один из специальных символов, уже используемых в качестве метасимволов. Например, для поиска "+" ваше выражение должно содержать "\+".

|

Символ дизъюнкции (другие названия - "или", или "вертикальная черта") используется, когда вы хотите, чтобы целевая строка соответствовала любому из выражений, разделенных этим символом. При поиске текстовой строки регулярное выражение "abc|xyz" будет совпадать с любыми вхождениями строк "abc" и "xyz".

[...]

Заключенный в квадратные скобки ("[" и "]") набор символов означает, что любой символ из этого набора может совпадать с искомой текстовой строкой. Тире ("-") между символами в квадратных скобках обозначает диапазон символов. Например, поиск в строке "abc" с помощью регулярного выражения "[a-z]" принесет три совпадения: "a", "b" и "c". Использование выражения "[az]" принесет только одно совпадение: "a".

^

Обозначает начало строки. В целевой строке "abc ab a" выражение "^a" даст одно совпадение — первый символ целевой строки. Регулярное выражение "^ab" тоже даст одно совпадение — первыедва символа целевой строки.

[^...]

Символ вставки ("^"), следующий сразу за левой квадратной скобкой ("["), имеет иное значение. Он используется для исключения остальных заключенных в скобки символов из совпадения с целевой строкой. Выражение "[^0-9]" указывает, что целевой символ не должен быть цифрой.

(...)

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

Результаты поиска с помощью регулярного выражения временно сохраняются и могут быть использованы в выражениизамены для построения нового выражения. В выражении замены вы можете включить символ "$0", который будет заменен подстрокой, найденной регулярным выражением во время поиска. Итак, если выражениепоиска "a(bcd)e" находит совпадение подстроки, товыражение замены "123-$0-123" заменит совпавший текст выражением "123-abcde-123".

Точно так же вы можете использовать в выражениях замены специальные символы "$1", "$2", "$3" и т.д. Эти символы будут заменены только результатамипомеченных(tagged) выражений - вместо полных совпадающих подстрок. Число, следующее за символом "$", показывает, на какое помеченное выражение вы ссылаетесь (если регулярное выражение содержит более одного помеченного выражения). Например, если вы используете выражениепоиска "(123)(456)", а ваше выражениезамены - "a-$2-b-$1", то совпадающая подстрока будет заменена на "a-456-b-123", а выражениезамены "a-$0-b" будет заменено на "a-123456-b"

$

Символ доллара ("$") обозначает конец строки. В текстовой строке "13 321 123" выражение "3$" будет иметь одно совпадение - последний символ в строке. Выражение "123$" также будет иметь одно совпадение — последниетрисимвола целевой строки.

*

Квантор "звездочка" ("*") означает, что символ слева от него должен совпадать снулем или болеевхождений этого символа кряду. То есть, шаблону "1*abc" будут соответствовать и текст "111abc", и "abc"

+

Близкий по значению квантору "звездочка" квантор "+" означает, что символ слева от него должен совпадать содним или болеевхождений этого символа кряду. То есть, шаблону "1+abc" будет соответствовать текст "111abc", но не "abc".

?

Квантор "знак вопроса" ("?") означает, что символ слева от него должен совпадатьноль или одинраз.
Таким образом, выражение "1?abc" будет совпадать с "abc", а также будет совпадать с подстрокой "1abc" из строки "111abc".

.

Метасимвол точки (".") совпадает с любым символом. Так, ".+abc" будет совпадать с "123456abc", а "a.c" будет совпадать с "aac", "abc", "acc" и т.д.

Допустимые условия и действия

Регулярные выражения можно использовать в любыхусловиях правила фильтрации заголовка. Например, в любом правиле, где используется условие "if the FROM HEADER contains". Регулярные выражения также можно использовать в условии "If the MESSAGE BODY contains".

Регулярные выражения можно использовать в двух видах действий правила Фильтра содержания: "Поиск и замена слов в заголовке" и "Поиск и замена слов в теле сообщения".

Регулярные выражения, используемые вправилах фильтров содержания, являются регистро-независимыми. Регистр символов не учитывается.

Чувствительность к регистру в Регулярных выражениях, используемых вдействиях, является опциональной. При создании регулярного выражения внутри привязанного к правилу действия вы можете включить/выключить учет регистра символов.

Конфигурирование Регулярного выражения в Условии Правила

Чтоб сконфигурировать использование регулярного выражения в условии на заголовок или тело сообщения:

1.В диалоге создания правил включите опцию, связанную с условием на заголовок или тело сообщения, которое вы хотите вставить в свое правило.

2.В поле описания внизу диалога создания правил щелкните по ссылке "contains specific strings" ("содержит определенные строки"), связанной с условием, выбранным на шаге 1. Откроется диалог "Укажите текст для поиска".

3.Нажмите ссылку "contains" ("содержит") в области "Строки, указанные в данный момент...".

4.Выберите "Matches Regular Expression" ("Совпадает с регулярным выражением") и нажмите кнопку.

5.Если вам нужна помощь при составлении регулярного выражения, или вы хотите протестировать его, нажмите кнопку "Проверить регулярное выражение." Если вам не нужно использовать диалог "Проверить регулярное выражение", введите свое регулярное выражение в предоставленное поле ввода, нажмите кнопку "Добавить", а затем перейдите к шагу 8.

6.Введите ваше регулярное выражение в поле "Поиск выражения". Чтобы упростить этот процесс, мы предоставили меню, которое можно использовать для быстрой вставки определенных метасимволов в ваше регулярное выражение. Для доступа к этому меню нажмите кнопку ">". Когда вы выбираете опцию из этого меню, в выражение будет вставлен соответствующий метасимвол, а точка вставки в тексте будет перемещена на соответствующее место, требуемое этим символом.

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

8.Нажмите.

9.Продолжите создание вашего правила в обычном порядке.

Конфигурирование Регулярного выражения в Действии Правила

Чтобы сконфигурировать использование регулярного выражения в действии "Search and Replace Words in…" ("Поиск и замена слов в…"):

1.В диалоге создания правил включите опцию, связанную с действием "Search and Replace Words in…", которое вы хотите вставить в свое правило.

2.В поле описания внизу диалога создания правил щелкните по ссылке "specify information" ("указать информацию"), связанной с условием, выбранным на шаге 1. При этом откроется диалог "Поиск и замена".

3.Если на шаге 1 вы выбрали действие "Search…header", то используйте выпадающий список для выбора заголовка, который вы хотите искать, или введите заголовок в поле, если его нет в приведенном списке. Если вы не выбирали действие "Search…header" на шаге 1, пропустите этот шаг.

4.Введите выражениепоиска, которое вы хотите использовать в этом действии. Чтобы упростить этот процесс, мы предоставили меню, которое можно использовать для быстрой вставки определенных метасимволов в ваше регулярное выражение. Для доступа к этому меню нажмите кнопку ">". Когда вы выбираете опцию из этого меню, в выражение будет вставлен соответствующий метасимвол, а точка вставки в тексте будет перемещена на соответствующее место, требуемое этим символом.

5.Введите выражениезамены, которое вы хотите использовать в этом действии. Как и в случае свыражением поиска, здесь мы тоже предоставили меню быстрого выбора метасимволов. Оставьте это поле пустым, если вы хотите удалить найденную подстроку, а не заменить ее другим текстом.

6.Нажмите "С учетом регистра", если хотите, чтобы выражение было чувствительно к регистру.

7.Включите опцию "Регулярные выражения", если хотите, чтобы строки поиска и замены рассматривались как регулярные выражения. В ином случае каждая из них будет обработана как простая подстрока поиска и замены — это будет выглядеть как точное совпадение символов, а не как обработка регулярного выражения.

8.Если вам не нужно тестировать ваше выражение, пропустите этот шаг. Если вы хотите протестировать работу выражения, нажмите "Запустить тест". В диалоге "Тестирование поиска и замены" введите свои выражения поиска и замены, а также текст, с которым вы хотите их проверить, затем нажмите "Тест". Когда вы закончите тестировать свои регулярные выражения, нажмите ".

9.Нажмите.

10.Продолжите создание вашего правила в обычном порядке.