Поделиться через


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

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

Последнее изменение раздела: 2009-11-05

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

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

Содержание

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

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

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

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

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

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

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

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

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

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

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

Предупреждение

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

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

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

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

\S

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

\s

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

\D

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

\d

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

\w

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

\W

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

|

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

*

Звездочка (*) соответствует отсутствию предыдущего символа или одному либо нескольким его вхождениям. Например, 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.

Этот символ может использоваться также в сочетании с символом доллара ($). В этом случае он указывает, что требуется точное соответствие строке. Например, ^kim@contoso.com$ соответствует только kim@contoso.com и никакой другой строке, в частности, не соответствует строке kim@contoso.com.au.

$

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

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

Этот символ также может использоваться в сочетании с символом «крышка» (^). В этом случае он указывает, что требуется точное соответствие строке. Например, ^kim@contoso.com$ соответствует только kim@contoso.com и никакой другой строке, в частности, не соответствует строке chris@sales.contoso.com.

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

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

Например, данное регулярное выражение соответствует телефонным номерам в Северной Америке в форматах 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