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