Шаблоны и подстановочные знаки
Назначение
Раздел описывает механизм использования шаблонов и подстановочных знаков, который применяется в системе IVA Mail для:
-
сопоставления адресов и доменов;
-
фильтрации сообщений;
-
настройки маршрутизации;
-
задания списков адресов.
Шаблоны могут использоваться в следующих механизмах:
Общий принцип
Шаблон — это строка, содержащая специальные символы, которые позволяют задать набор значений вместо одного точного совпадения.
Шаблоны используются:
-
для сопоставления адресов электронной почты;
-
для проверки доменов;
-
для фильтрации строковых значений.
Подстановочные знаки
Подстановочные знаки используются в шаблонах для поиска и преобразования значений.
Поддерживаются следующие конструкции:
| Конструкция | Описание | Пример |
|---|---|---|
|
Ровно один любой символ. |
|
|
Любое количество любых символов, включая пустую строку. |
|
|
Один символ из перечисленных. |
|
|
Один символ из диапазона, включая первое и последнее число диапазона. |
user[0-9]@example.org |
|
Повторение предыдущей подстановки от |
|
|
Ссылка на значение, найденное N-й подстановкой. Используется в строке замены. |
|
|
Буквальный символ обратной косой черты. |
|
|
Буквальный пробел в строке замены. |
|
Символ "?"
Символ ? соответствует ровно одному любому символу.
Пример:
user?@example.org
Соответствует:
user1@example.org
userA@example.org
Не соответствует:
user12@example.org
user@example.org
Символ "*"
Символ * соответствует любой последовательности любых символов, включая пустую строку.
Пример:
*@example.org
Соответствует:
user@example.org
admin@example.org
support@example.org
Квадратные скобки []
Квадратные скобки [] используются для указания одного символа из перечисления или диапазона.
Пример перечисления:
user[123]@example.org
Соответствует:
user1@example.org
user2@example.org
user3@example.org
Не соответствует:
user4@example.org
Пример диапазона:
user[0-9]@example.org
Соответствует любому адресу от:
user0@example.org
до:
user9@example.org
Символы внутри квадратных скобок
Символы внутри [] сравниваются буквально, включая:
? * { } [ ]
| Символ `] `в перечислении должен быть указан первым. |
Например, чтобы найти буквальный символ *, используйте:
[*]
Чтобы найти буквальный символ [, используйте:
[[]
Если символ "-" должен восприниматься как обычный символ, а не как диапазон, укажите его первым или последним:
[-az]
[a-z-]
Фигурные скобки {m,n}
Фигурные скобки {} задают количество повторений предыдущей подстановки.
Они могут использоваться после ?; *; [].
Общий вид:
{m,n}
где:
-
m — минимальное количество повторений;
-
n — максимальное количество повторений.
Примеры:
| Шаблон | Описание |
|---|---|
|
От 2 до 4 любых символов. |
|
Три цифры. |
|
Одна или более строчных букв. |
|
Ноль или одно повторение произвольной последовательности. |
В конструкции {m,n} одно из значений может отсутствовать. Например, {2,} означает минимум два повторения.
|
Комбинации "?" и "*"
Комбинации подстановок объединяются в одно выражение.
Примеры:
| Шаблон | Описание |
|---|---|
|
Ровно два любых символа. |
|
Минимум один символ. |
|
Минимум один символ. |
Захваченные значения и подстановка \N
Каждая подстановка после успешного совпадения сохраняет найденное значение.
В строке замены можно сослаться на найденное значение с помощью:
\N
где N — номер подстановки от 1 до 9.
Пример:
<*@old.example.org> = \1@new.example.org
Если исходный адрес:
ivan@old.example.org
то результат:
ivan@new.example.org
Использование шаблонов в таблицах маршрутизатора
В таблицах маршрутизатора инструкция записывается в виде:
pattern = replacement
Шаблоны бывают двух типов:
| Тип шаблона | Описание |
|---|---|
|
Шаблон применяется к полному адресу. |
|
Шаблон применяется только к доменному имени. |
Пример шаблона для полного адреса:
<*@old.example.org> = \1@new.example.org
Пример шаблона для домена:
old.example.org = new.example.org
| Если правило должно применяться ко всему адресу, используйте уголковые скобки. Если уголковые скобки не указаны, шаблон применяется только к доменной части. |