Регулярные выражения в правилах транспорта

 

Применимо к: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Последнее изменение раздела: 2016-03-18

Вы можете использовать регулярные выражения в предикатах правил транспорта для MicrosoftExchange Server 2010, чтобы сопоставлять текстовые шаблоны с разными частями сообщения (например, заголовком, строкой получателя или отправителя, темой и текстом). Условия и ограничения для правил транспорта содержат предикаты, позволяющие определить необходимость применения настроенного действия к электронному сообщению.

ПримечаниеПримечание.
Так как среды клиентов разнообразны, служба поддержки клиентов Майкрософт (CSS) не может участвовать в разработке или тестировании пользовательских сценариев регулярных выражений (сценариев RegEx). При разработке, тестировании и отладке пользовательских сценариев RegEX подписчикам на Office 365 придется полагаться на ИТ-специалистов организации. Пользователи Office 365 могут также обратиться во внешнюю консультационную службу, такую как Microsoft Consulting Services (MCS). Независимо от того, какие специалисты занимаются разработкой сценариев (внутренние или внешние), инженеры службы CSS, работающие с EXO и EOP, не могут содействовать в создании сценариев RegEx.

Необходимы сведения о задачах управления, связанных с правилами транспорта? См. статью Управление правилами транспорта.

Содержание

Простые выражения и регулярные выражения

Регулярные выражения в Exchange 2010

Создание правила транспорта, в котором используется регулярное выражение

Простые выражения и регулярные выражения

Чтобы разобраться в регулярных выражениях, необходимо начать с простых. Простое выражение — это определенное значение, которое необходимо найти в сообщении. Предикаты с помощью простых выражений находят определенные слова или строки. Пример простого выражения — название документа, который запрещено распространять за пределами организации, например ПрогнозГодовогоОборота.doc. Какая-то часть данных в электронном сообщении должна полностью совпадать с простым выражением, чтобы применялось условие или исключение в правилах транспорта.

Регулярное выражение — это краткая запись, не требующая строгого соответствия, предназначенная для обнаружения шаблонных элементов текста в сообщении. Эта запись содержит два базовых типа символов:

  • Буквенные символы. Текст, который должен присутствовать в целевой строке. Это обычные символы, используемые при вводе.

  • Метасимволы. Один или несколько специальных символов, которые не интерпретируются буквально. Они определяют, как текст может меняться в целевой строке.

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

Такие данные невозможно корректно сопоставить с простым выражением, так как простое выражение требует ввода всех возможных вариантов нужного значения. Во многих случаях использование простых выражений для таких целей представляет собой крайне сложную логическую задачу, а поиск в содержимом сообщений большого количества совпадений с такими выражениями становится ресурсозатратным. Использование регулярных выражений, как правило, более эффективно. Вместо указания всех возможных вариантов можно настроить предикат правила транспорта на поиск текстовых шаблонов.

Регулярные выражения в Exchange 2010

В командной консоли Exchange можно использовать регулярные выражения в любом предикате, который принимает свойство Patterns. В консоли управления Exchange можно использовать регулярные выражения с любым условием или исключением, которое содержит слова с текстовыми шаблонами. Дополнительные сведения о предикатах см. в статье Предикаты правил транспорта.

ВниманиеВнимание!
Необходимо тщательно проверять созданные регулярные выражения, чтобы убедиться, что их применение даст ожидаемый результат. Неправильное регулярное выражение может привести к неожиданным совпадениям и вызвать нежелательное поведение правила транспорта. Это может привести к нежелательным действиям с сообщениями или их содержимым, а также вероятной потере данных при отклонении или возврате сообщения. Кроме того, сложные регулярные выражения могут повлиять на производительность транспорта почты. Регулярные выражения следует проверять в лабораторной среде до их внедрения в рабочую среду.

В приведенной ниже таблице перечислены строки шаблона, которые можно использовать при создании регулярного выражения для сопоставления с шаблонами в Exchange 2010.

Строки шаблона

Строка шаблона Описание

\S

Строка шаблона \S соответствует любому единичному символу, который не является пробелом.

\s

Строка шаблона \s соответствует единичному символу пробела.

\D

Строка шаблона \D соответствует любой цифре, которая не является числом.

\d

Строка шаблона \d соответствует любой одной цифре, которая является числом.

\w

Строка шаблона \w соответствует любому символу Юникода, который является буквой или десятичной цифрой.

\W

Строка шаблона \W соответствует любому символу Юникода, который не является буквой или десятичной цифрой.

|

Вертикальная черта ( | ) выполняет функцию OR.

*

Звездочка ( * ) соответствует определенному количеству экземпляров того символа, который указан перед ней (0, 1 или несколько). Например, ab*c соответствует следующим строкам: ac, abc, abbbbc.

( )

Скобки выступают в роли группирующего разделителя. Например, a(bc)* соответствует следующим строкам: a, abc, abcbc, abcbcbc и т. д.

\

Обратная косая черта используется в качестве escape-символа перед специальным символом. Специальные символы — символы, которые используются в строках шаблонов:

  • обратная косая черта ( \ );

  • вертикальная черта ( | );

  • звездочка ( * );

  • левая круглая скобка ( ( );

  • правая круглая скобка ( ) );

  • крышка ( ^ );

  • знак доллара ( $ ).

Например, если нужно найти строку, которая содержит (525), следует указать \(525\).

^

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

Например, ^fred@contoso соответствует fred@contoso.com и fred@contoso.co.uk, но не alfred@contoso.com.

$

Знак доллара ( $ ) показывает, что предыдущая строка шаблона должна находиться в конце текстовой строки, с которой выполняется сопоставление.

Например, contoso.com$ соответствует adam@contoso.com и kim@research.contoso.com, но не kim@contoso.com.au.

Создание регулярных выражений

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

Например, приведенное ниже регулярное выражение соответствует телефонным номерам в Северной Америке в форматах 425 555-0100 и 425.555.0100.

425(\s|.)\d\d\d(-|.)\d\d\d\d

Можно расширить этот пример, добавив формат телефонного номера (425) 555-0100, в котором код региона заключен в скобки. В этом примере регулярное выражение соответствует всем трем форматам телефонных номеров.

\d\d\d((\s|.|-|\)|\)\s)\d\d\d(\s|.|-)\d\d\d\d

Давайте проанализируем приведенный выше пример.

  • \d\d\d. Эта часть строки соответствует трем цифрам, которые должны находиться в начале.

  • ((\s|.|-|\)|\)\s). Эта часть строки требует наличия пробела, точки или дефиса после трех цифр. Каждая строка сопоставления символов заключена в группирующие разделители и отделена вертикальной чертой. Это означает, что только один из символов, указанных в образованной разделителями группе, может находиться в данном месте сопоставляемой строки. Для разделения между кодом области и следующими тремя цифрами служат закрывающие скобки или закрывающие скобки и пробел.

  • \d\d\d Эта часть строки соответствует трем цифрам, которые должны следовать в строке.

  • (\s|.|-). Эта часть строки требует наличия пробела, точки или дефиса после трех цифр.

  • \d\d\d\d. Эта часть строки требует, чтобы далее следовали четыре цифры.

Выше упомянутому регулярному выражению соответствуют следующие примеры значений:

  • (425)555.0100

  • 425 555 0100

  • 425. 555-0100;

  • (425) 555-0100;

  • 425-555-0100;

  • (425) 555-0100;

Создание правила транспорта, в котором используется регулярное выражение

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

New-TransportRule -Name "Social Security Number Block Rule" -SubjectOrBodyMatchesPatterns '\d\d\d-\d\d-\d\d\d\d' -RejectMessageEnhancedStatusCode "5.7.1" -RejectMessageReasonText "This message has been rejected because of content restrictions" 

В этом примере показано, как можно просмотреть новые правила транспорта.

Get-TransportRule "Social Security Number Block Rule" | Format-List

 © Корпорация Майкрософт (Microsoft Corporation), 2010. Все права защищены.