Expressões regulares nas regras de fluxo de email no Exchange Online

Você pode usar expressões regulares (RegEx) em condições e exceções em regras de fluxo de email (também conhecidas como regras de transporte) para corresponder padrões de texto em diferentes partes de uma mensagem (por exemplo, cabeçalhos de mensagem, remetente, destinatários, assunto e o corpo da mensagem). Condições e exceções determinam se a ação na regra deve ser aplicada a uma mensagem de email.

Observação

Devido às variações nos ambientes do cliente, o CSS (Serviços de Suporte ao Cliente) da Microsoft não pode participar do desenvolvimento ou teste de scripts de expressão regular personalizados ("Scripts RegEx"). Para desenvolvimento, teste e depuração de scripts personalizados regEX, os clientes do Microsoft 365 precisarão contar com recursos internos de TI. Como alternativa, os clientes do Microsoft 365 podem optar por usar um recurso de consultoria externa, como o MCS (Microsoft Consulting Services). Independentemente do recurso de desenvolvimento de script, os engenheiros de suporte do CSS não estão disponíveis para ajudar os clientes com consultas personalizadas de script RegEx.

Procurando tarefas de gerenciamento relacionadas às regras de fluxo de email? Consulte Regras de fluxo de email (regras de transporte) no Exchange Online.

Expressões simples versus expressões regulares

Uma expressão simples é um valor específico que você deseja corresponder exatamente em uma mensagem. Condições e exceções usando expressões simples correspondem a palavras ou cadeias de texto específicas. Por exemplo, uma condição de regra de fluxo de email que procura documentos chamados Vendas Yearis Forecast.docx.

Uma expressão regular é uma notação concisa e flexível para localização de padrões de texto em uma mensagem. A notação consiste em dois tipos básicos de caracteres:

  • Caracteres literais: texto que deve existir na cadeia de caracteres de destino. Esses caracteres são caracteres normais, conforme digitado.
  • Metacaracters: um ou mais caracteres especiais que indicam como o texto pode variar na cadeia de caracteres de destino.

Você pode usar expressões regulares para analisar rapidamente mensagens de email para encontrar padrões de texto específicos. Expressões regulares permitem detectar mensagens com tipos específicos de conteúdo, como SSNs (números de segurança social), números de patente e números de telefone.

Você não pode corresponder razoavelmente dados variáveis com uma expressão simples porque uma expressão simples requer todas as variações possíveis do valor a serem detectadas. Corresponder a um grande número de expressões simples no conteúdo da mensagem pode ser intensivo em recursos. Usar expressões regulares é mais eficiente. Em vez de especificar todas as variações possíveis, você pode configurar a condição de regra de fluxo de email para pesquisar um padrão de texto.

Expressões regulares no Exchange Online

Em Exchange Online PowerShell, nomes de parâmetro que terminam com MatchesPatterns o uso de expressões regulares. No Centro de administração do Exchange (EAC), condições e nomes de exceção que terminam com ... corresponde a qualquer um desses padrões de texto que usam expressões regulares. Para obter mais informações sobre as condições e exceções da regra de fluxo de email em Exchange Online, consulte Condições e exceções de regra de fluxo de email (predicados) em Exchange Online.

Aviso

Teste cuidadosamente expressões regulares. Uma expressão regular configurada incorretamente pode gerar correspondências inesperadas e causar comportamento indesejado de regra de fluxo de correio, incluindo:

  • Ações indesejáveis em mensagens e conteúdo de mensagens.
  • Perda potencial de dados.

Expressões regulares complexas também podem afetar o desempenho do fluxo de email. Teste suas expressões regulares em um ambiente de teste antes de implementá-las na produção.

A tabela a seguir lista as cadeias de caracteres de padrão que você pode usar para criar uma expressão regular correspondente a padrões em Exchange Online:

Cadeia de Caracteres padrão Descrição
\S A cadeia de caracteres de padrão \S corresponde a qualquer caractere único que não seja um espaço.
\s A cadeia de caracteres padrão \s corresponde a qualquer espaço em branco único.
\D A cadeia de caracteres padrão \D corresponde a qualquer dígito não-numérico.
\D A cadeia de caracteres padrão \d corresponde a qualquer dígito numérico único.
\W A cadeia de caracteres de padrão \w corresponde a qualquer caractere Unicode categorizado como uma letra ou um dígito decimal.
\W A cadeia de caracteres de padrão \W corresponde a qualquer caractere Unicode não categorizado como uma letra ou dígito decimal.
* O caractere asterisco ( * ) corresponde a zero ou mais instâncias do caractere anterior. Por exemplo, ab*c corresponde às seguintes cadeias de caracteres: ac, abce abbbbc.
| O caractere Pipe ( | ) atua como um operador OR. Por exemplo, 'contoso|fabrikam' corresponde a qualquer instância de contoso ou fabrikam.
( ) Parênteses agem como delimitadores de agrupamento. Por exemplo, \a(bc)*\ corresponde às seguintes cadeias de caracteres: a, abc, abcbc, abcbcbce assim por diante.
\ Um backslash é usado como um caractere de escape antes de um caractere especial. Caracteres especiais são caracteres usados em cadeias de caracteres de padrão:
  • Backslash \
  • Pipe |
  • Asterisco *
  • Abrir parênteses (
  • Fechar parênteses )
  • Cursor ^
  • Sinal de dólar $

Por exemplo, se você quiser corresponder a uma cadeia de caracteres que contém (525), use \(525\).

^ O caractere caret ( ^ ) indica que a cadeia de caracteres padrão que segue o caret deve existir no início da cadeia de caracteres de texto que está sendo correspondida. Por exemplo, ^fred@contoso corresponde fred@contoso.com e fred@contoso.co.uk , mas não alfred@contoso.com.
$ O caractere dollar-sign ( $ ) indica que a cadeia de caracteres de padrão anterior deve existir no final da cadeia de caracteres de texto que está sendo correspondida. Por exemplo, contoso.com$ corresponde adam@contoso.com e kim@research.contoso.com mas não corresponde kim@contoso.com.aua .

Construindo expressões regulares

Usando a tabela anterior, você pode construir uma expressão regular que corresponda ao padrão dos dados que deseja corresponder:

  • Trabalhando da esquerda para a direita, examine cada caractere ou grupo de caracteres nos dados que você deseja corresponder.
  • Leia a descrição de cada cadeia de caracteres de padrão para determinar como ela se aplica aos dados que você está correspondendo.
  • Determine qual cadeia de caracteres padrão na tabela representa esse caractere ou grupo de caracteres e adicione essa cadeia de caracteres à expressão regular.

Observação

Expressões regulares usadas em Regras de Transporte NÃO são sensíveis a casos.

O exemplo a seguir corresponde aos números de telefone norte-americanos nos formatos 425 555-0100 e 425.555.0100:

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

Você pode expandir esse exemplo adicionando o formato de telefone (425) 555-0100, que usa parênteses para o código de área.

O exemplo a seguir corresponde a todos os três formatos de número de telefone.

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

Você pode analisar o exemplo anterior da seguinte maneira:

  • \d\d\d: exige que exatamente três dígitos numéricos apareçam primeiro.
  • ((\s|.|-|\)|\)\s): requer que exista um espaço, um período ou um hífen após o número de três dígitos. Cada cadeia de caracteres de correspondência de caracteres está contida nos delimitadores de agrupamento e separada pela barra vertical. Essa separação significa que apenas um dos caracteres especificados dentro dos delimitadores de agrupamento pode existir nesse local na cadeia de caracteres que está sendo correspondida. Para a separação entre o código de área e os próximos três dígitos, ele também procura um parêntese fechado ou parênteses fechados e espaço.
  • \d\d\d: exige que exatamente três dígitos numéricos apareçam em seguida.
  • (\s|.|-): requer que exista um espaço, um período ou um hífen após o número de três dígitos.
  • \d\d\d\d: exige que exatamente quatro dígitos numéricos apareçam em seguida.

O exemplo anterior corresponde aos seguintes valores:

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

Criando um fluxo de email que usa uma expressão regular

O exemplo a seguir cria uma regra de fluxo de email no Exchange Online PowerShell que usa expressões regulares para corresponder a SSNs no assunto de uma mensagem de email:

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"

Para obter informações detalhadas sobre sintaxe e parâmetro, consulte New-TransportRule.

O exemplo a seguir mostra a nova regra de fluxo de email:

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

Para obter informações detalhadas sobre sintaxe e parâmetro, consulte Get-TransportRule.