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


Регулярные выражения в правилах потока обработки почты в Exchange Online

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

Примечание.

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

Ищете задачи управления, связанные с правилами потока обработки почты? См. статью Правила потока обработки почты (правила транспорта) в Exchange Online.

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

Простое выражение — это определенное значение, которое необходимо найти в сообщении. Условия и исключения, использующие простые выражения, соответствуют определенным словам или текстовым строкам. Например, условие правила потока обработки почты, которое ищет документы с именем Yearly Sales Forecast.docx.

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

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

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

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

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

В Exchange Online PowerShell имена параметров, заканчивающиеся на MatchesPatterns , используют регулярные выражения. В Центре администрирования Exchange (EAC) условия и имена исключений, заканчивающиеся на ... соответствует любому из этих текстовых шаблонов с использованием регулярных выражений. Дополнительные сведения об условиях и исключениях правил потока обработки почты в Exchange Online см. в статье Условия и исключения (предикаты) правил потока обработки почты в Exchange Online.

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

Тщательно протестируйте регулярные выражения. Неправильно настроенное регулярное выражение может привести к непредвиденным совпадениям и привести к нежелательному поведению правила потока обработки почты, в том числе:

  • Нежелательные действия с сообщениями и содержимым сообщений.
  • Потенциальная потеря данных.

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

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

Строка шаблона Описание
\S Строка шаблона \S соответствует любому единичному символу, который не является пробелом.
\s Строка шаблона \s соответствует единичному символу пробела.
\D Строка шаблона \D соответствует любой цифре, которая не является числом.
\d Строка шаблона \d соответствует любой одной цифре.
\w Строка шаблона \w соответствует любому символу Юникода, классифицированным как буква или десятичная цифра.
\W Строка шаблона \W соответствует любому символу Юникода, который не является буквой или цифрой.
* Символ звездочки ( * ) соответствует нулю или нескольким экземплярам предыдущего символа. Например, ab*c соответствует следующим строкам: ac, abcи abbbbc.
| Символ Pipe ( | ) выступает в качестве оператора OR. Например, contoso|fabrikam соответствует любым экземплярам contoso или fabrikam.
( ) Скобки выступают в роли группирующего разделителя. Например, \a(bc)*\ соответствует следующим строкам: a, abc, abcbc, abcbcbcи т. д.
\ Обратная косая черта используется в качестве escape-символа перед специальным символом. Специальные символы — символы, которые используются в строках шаблонов:
  • Обратной косой черты \
  • Канал |
  • Звездочка *
  • Открываемая скобка (
  • Закрывающая скобка )
  • Курсор ^
  • Знак доллара $

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

^ Символ курсора ( ^ ) указывает, что строка шаблона, следующая за курсором, должна существовать в начале сопоставляемой текстовой строки. Например, соответствует и fred@contoso.co.uk , ^fred@contosofred@contoso.com но не 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

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

В следующем примере создается правило потока обработки почты в Exchange Online 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"

Дополнительные сведения о синтаксисе и параметрах см. в статье New-TransportRule.

В следующем примере показано новое правило потока обработки почты:

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

Дополнительные сведения о синтаксисе и параметрах см. в статье Get-TransportRule.