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


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

Область применения: Exchange Server 2013 г., Exchange Server 2016 г., Exchange Server 2019 г., Exchange Online

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

Примечание.

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

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

Содержание

Содержание

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

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

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

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

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

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

Регулярные выражения в Exchange Server 2013 г.

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

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

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

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

Строка шаблона Описание
\S Строка шаблона \S соответствует любому единичному символу, который не является пробелом.
\s Строка шаблона \s соответствует единичному символу пробела.
\D Строка шаблона \D соответствует любой цифре, которая не является числом.
\d Строка шаблона \d соответствует любой одной цифре.
\w Строка шаблона \w соответствует любому символу Юникода, классифицированным как буква или десятичная цифра.
\W Строка шаблона \W соответствует любому символу Юникода, который не является буквой или цифрой.
* Звездочка (*) соответствует отсутствию предыдущего символа или одному либо нескольким его вхождениям. Например, ab*c соответствует следующим строкам: ac, abc и abbbbc.
( ) Скобки выступают в роли группирующего разделителя. Например, a(bc)* соответствует следующим строкам: a, abc, abcbc, abcbcbc и так далее.
\ Обратная косая черта используется в качестве escape-символа перед специальным символом. Специальные символы — это символы, используемые в строках шаблона: обратная косая черта ( \ ); Трубы; Звездочка ( * ); Открываемая скобка ( ( ); Закрывающая скобка ( ) ); Курсор ( ^ ); Знак доллара ( $ ). Например, если требуется сопоставить строку, содержащую (525), введите (525).
^ Символ «крышка» (^) указывает, что следующая за этим символом строка шаблона должна располагаться в начале сопоставляемой текстовой строки. Например, ^fred@contoso соответствует и fred@contoso.co.ukalfred@contoso.comне соответствует fred@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\d: для этой части требуется, чтобы в первую очередь появились ровно три цифры.
  • ((\s|.| -|)|) \s): для этой части требуется, чтобы после трехзначного числа существовал пробел, точка или дефис. Каждая строка сопоставления символов заключена в группирующие разделители и отделена вертикальной чертой. Это разделение означает, что в этом расположении в сопоставляемой строке может существовать только один из указанных символов внутри разделителей группирования. Для разделения между кодом области и следующими тремя цифрами он также ищет закрытую скобку или замкнутую скобку и пробел.
  • \d\d\d\d: для этой части требуется, чтобы рядом отображалось ровно три числовые цифры.
  • (\s|.| -): для этой части требуется, чтобы после трехзначного числа существовал пробел, точка или дефис.
  • \d\d\d\d\d: для этой части требуется, чтобы рядом появились ровно четыре числовые цифры.

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

  • (425)555.0100
  • 425 555 0100
  • 425 555 0100
  • (425) 555-0100
  • 425-555-0100
  • (425) 555-0100

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

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

   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