Регулярные выражения в правилах транспорта
Применимо к: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
Последнее изменение раздела: 2009-04-09
В этом разделе рассматривается внедрение регулярных выражений, которые могут использоваться с предикатами правил транспорта. Предикаты используются в условиях и ограничениях для определения возможности применения настроенного действия или действий к сообщению электронной почты.
Дополнительные сведения о правилах транспорта см. в разделе Обзор правил транспорта.
Определение регулярных выражений
В первую очередь необходимо уяснить, что представляет собой простое выражение. Простое выражение отражает конкретное выражение, которое нужно соответствует условию или исключению. Пример простого выражения — заголовок документа, который нельзя распространять за пределами организации. Данные в сообщении электронной почты должны точно совпадать с простым выражением, чтобы они отвечали условию или исключению в правилах транспорта.
Регулярное выражение — это лаконичная и гибкая запись, предназначенная для обнаружения шаблонных элементов текста в сообщении. Эта запись выполняется с использованием двух базовых типов символов: литералов (обычных текстовых символов), обозначающих текст, который должен присутствовать в целевой строке, а также метасимволов, управляющие вариациями текста в целевой строке. С помощью регулярных выражений можно быстро разбирать сообщения электронной почты и искать определенные шаблонные элементы текста.
Возможность поиска шаблонных элементов текста в сообщении электронной почты позволяет сопоставлять предикаты с данными в сообщениях, которые могут динамически меняться. Примеры таких данных — номера социального страхования и номера патентов. Такие данные нельзя логично сопоставить с простым выражением, так как в простом выражении требуется вводить каждый вариант нужного значения. С использованием регулярных выражений можно настроить предикат для поиска в сообщении шаблонных номеров социального страхования или номеров патентов.
Регулярные выражения можно использовать в любом предикате правила условия или исключения, кроме предиката «это отчет о доставке». Дополнительные сведения о том, какие предикаты допускают применение регулярных выражений с шаблонами, см. в разделе Предикаты правил транспорта.
Внедрение регулярных выражений
В среде управления Exchange можно использовать регулярные выражения в любом предикате, который принимает свойство предиката Patterns
. В консоли управления Exchange можно использовать регулярные выражения с любым условием или исключением, которое содержит слова с шаблонами текста. В табл. 1 перечисляются все строки шаблонов, которые можно использовать для создания регулярного выражения с шаблонами.
Внимание! |
---|
Необходимо тщательно проверять созданные регулярные выражения, чтобы убедиться, что их применение даст ожидаемый результат. Неправильное регулярное выражение может привести к неожиданным совпадениям и вызвать нежелательное поведение правила транспорта. Регулярные выражения следует проверять в лабораторной среде до их внедрения в производство. |
Таблица 1. Строки шаблонов
Строка шаблона | Описание |
---|---|
|
Строка шаблона |
|
Строка шаблона |
|
Строка шаблона |
|
Строка шаблона |
|
Строка шаблона |
|
Вертикальная черта ( |
|
Подстановочный знак ( |
|
Скобки выступают в роли группирующего разделителя. Например, |
|
Обратная косая черта (\) является escape-символом, который используется вместе со специальным символом. Специальные символы — это приведенные ниже символы, которые используются в строках шаблона.
Например, если нужно найти строку, которая содержит (525), следует указать \(525\). |
|
Если нужно, чтобы символ обратной косой черты распознавался как таковой, а не как escape-символ, следует ввести две косые черты. Например, если нужно найти строку, которая содержит |
|
Символ «крышка» ( Этот символ может использоваться также в сочетании с символом доллара ( |
|
Символ доллара ( Этот символ также может использоваться в сочетании с символом «крышка» ( |
С помощью табл. 1 можно создать регулярное выражение, которое соответствует нужному шаблону данных. В порядке следования слева направо изучите отдельные символы или группы символов в данных, которые нужно сопоставить. Прочтите описание каждой из строк шаблона, чтобы определить, как он будет применяться к сопоставляемым данным. Затем определите, какая строка из приведенных в табл. 1 соответствует данному символу или группе символов, и добавьте ее в регулярное выражение. По завершению этой работы будет получено полностью готовое регулярное выражение.
Например, следующее регулярное выражение соответствует телефонным номерам в Северной Америке в форматах 425 555-0100 и 425.555.0100:
425(\s|.)\d\d\d(-|.)\d\d\d\d
Можно развернуть этот пример, добавив формат телефонного номера (425) 555-0100, в котором код региона заключен в скобки. Следующее регулярное выражение соответствует всем трем форматам телефонных номеров:
(\\()*\d\d\d(\\)|\s|.)\d\d\d(-|.)\d\d\d\d
Разберем приведенный выше пример:
(\\()* — эта часть строки делает первую скобку необязательной. Поскольку закрывающая скобка также является разделителем регулярного выражения, ее следует пропустить; для этого служит двойная обратная косая черта
\\
. Группа скобок (()
) группирует символы\\(
, поэтому подстановочный знак*
может действовать в отношении символов\\(
, делая их необязательными.\d\d\d — эта часть строки соответствует трем цифрам, которые должны следовать в строке.
(\\)|\s|.) — эта часть строки указывает на то, что за последовательностью из трех чисел должны следовать открывающая скобка, пробел или точка. Каждая строка сопоставления символов заключена в группирующие разделители и отделена вертикальной чертой. Это означает, что в образованной разделителями группе в данном месте сопоставляемой строки может находиться только один из указанных символов.
\d\d\d — эта часть строки соответствует трем цифрам, которые должны следовать в строке.
(-|.) — эта часть строки требует наличия дефиса или точки после трех цифр. Так как дефис и точка заключены в группирующие разделители, в указанном месте сопоставляемой строки может стоять только один из этих двух символов.
\d\d\d\d — эта часть строки требует наличия четырех цифр.
Пример правила транспорта, в котором используется регулярное выражение
В следующем примере демонстрируется, как использовать регулярные выражения при создании нового правила в среде управления Exchange:
Чтобы создать правило транспорта, в котором используются регулярные выражения для сопоставления с номерами социального страхования в теме сообщения электронной почты
Выполните следующие команды:
$Condition = Get-TransportRulePredicate SubjectMatches $Condition.Patterns = @("\d\d\d-\d\d-\d\d\d\d") $Action = Get-TransportRuleAction RejectMessage $Action.RejectReason = "The transmission of Social Security Numbers is prohibited." New-TransportRule -Name "Social Security Number Block Rule" -Conditions $Condition -Actions $Action
Выполните следующую команду, чтобы просмотреть новое правило транспорта:
Get-TransportRule "Social Security Number Block Rule" | Format-List
При выполнении команды Get-TransportRule отображаются следующие сведения:
Identity : Social Security Number Block Rule,753ed939-1227-4b2a-a8e0-ec49b0615f30
Name : Social Security Number Block Rule
RuleCollectionName : Transport
Priority : 0
Comments :
ManuallyModified : False
Conditions : {SubjectMatches}
Exceptions :
Actions : {RejectMessage}
State : Enabled
IsValid : True
ObjectState : Unchanged
Дополнительные сведения
Дополнительные сведения о синтаксисе и параметрах каждой из команд см. в следующих разделах:
Дополнительные сведения о правилах транспорта см. в следующих разделах: