Expressões Regulares em Regras de Transporte
Aplica-se a: Exchange Server 2010
Tópico modificado em: 2009-11-05
Você pode usar expressões regulares nos predicados de regra de transporte do Exchange Server 2010 para corresponder a padrões de texto em diferentes partes de uma mensagem (como nos cabeçalhos, remetentes, destinatários, assuntos e também no corpo das mensagens). Predicados são usados por condições e exceções para determinar se uma ação configurada deve ser aplicada a uma mensagem de email.
Procurando tarefas de gerenciamento relacionadas a regras de transporte? Consulte Gerenciando Regras de Transporte.
Sumário
Expressões Simples x Expressões Regulares
Expressões Regulares no Exchange 2010
Criando uma Regra de Transporte que Use uma Expressão Regular
Expressões Simples x Expressões Regulares
Para entender as expressões regulares, é preciso começar entendendo expressões simples. Uma expressão simples é um valor específico que você deseja corresponder exatamente em uma mensagem. Predicados usando expressões simples correspondem a palavras ou cadeias de caracteres específicas. Um exemplo de expressão simples é o título de um documento que sua organização não quer que seja distribuído fora da organização, como Previsão de Vendas Anuais.doc. Um dado em uma mensagem de email deve corresponder exatamente a uma expressão simples para satisfazer uma condição ou exceção em regras de transporte.
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 são caracteres normais, que valem conforme digitados.
- Metacaracteres Um ou mais caracteres especiais que não são interpretados literalmente. Eles 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 localizar padrões de texto específicos. Isso permite a você detectar mensagens com tipos específicos de conteúdo, como CPFs, números de patentes e números de telefone.
Não é possível fazer correspondência para esses dados com uma expressão simples, pois uma expressão simples exige que você insira todas as variações possíveis do valor que deseja detectar. Em muitos casos, o uso de expressões simples para essas aplicações se torna um desafio logístico, e corresponder um grande número de expressões simples no conteúdo de mensagens pode exigir muitos recursos. O uso de expressões regulares costuma ser mais eficiente. Em vez de especificar todas as variações possíveis, você pode configurar o predicado da regra de transporte para pesquisar um padrão de texto.
Expressões Regulares no Exchange 2010
No Shell de Gerenciamento do Exchange, você pode usar expressões regulares em qualquer predicado que aceite a propriedade de predicado Patterns. No Console de Gerenciamento do Exchange, você pode usar epressões regulares com qualquer condição ou exceção que contenha as palavras com padrões de texto. Para obter mais informações sobre predicados, consulte Predicados de regra de transporte.
Aviso
Você deve testar regularmente as expressões regulares que construir para verificar se elas produzem os resultados esperados. Uma expressão regular configurada incorretamente pode produzir correspondências inesperadas e causar comportamento indesejado das regras de transporte. Isso pode resultar na tomada de ações indesejáveis em mensagens e no conteúdo delas, com possibilidade de perda de dados quando ações como rejeição ou devolução de mensagens forem usadas. 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 de correspondência de padrões no Exchange 2010.
Cadeias de caracteres de padrão
Cadeia de caracteres padrão | Descrição |
---|---|
|
A cadeia de caracteres de padrão |
|
A cadeia de caracteres padrão |
|
A cadeia de caracteres padrão |
|
A cadeia de caracteres padrão |
|
A cadeia de caracteres do padrão |
|
A cadeia de caracteres de padrão |
|
O caractere de barra vertical ( |
|
O caractere de asterisco ( |
|
Parênteses agem como delimitadores de agrupamento. Por exemplo, |
|
Uma barra invertida é usada como um caractere de escape antes de um caractere especial. Caracteres especiais são caracteres usados em cadeias de caracteres de padrão:
Por exemplo, se você deseja fazer a correspondência de uma cadeia de caracteres que contém |
|
O circunflexo ( Por exemplo, Esse caractere também pode ser usado com o cifrão ( |
|
O cifrão ( Por exemplo, Esse caractere também pode ser usado com o circunflexo ( |
Construindo Expressões Regulares
Usando a tabela anterior, você pode construir uma expressão regular que corresponda ao padrão dos dados que você 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. Em seguida, determine qual cadeia de caracteres de padrão na tabela representa esse caractere ou grupo de caracteres e adicione esse cadeia de caracteres padrão à expressão regular. Quando tiver concluído, você terá uma expressão regular inteiramente construída.
Este exemplo de expressão regular corresponde a 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. Este exemplo de uma expressão regular 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 Esta parte exige que exatamente três dígitos numéricos apareçam primeiro.
- ((\s|.|-|\)|\)\s) Esta parte exige que um espaço, um ponto ou um hífen exista 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. Isso significa que apenas um dos caracteres especificados dentro dos delimitadores de agrupamento pode existir neste 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, ela também procura por um parêntese de fechamento, ou por um parêntese de fechamento e um espaço.
- \d\d\d Esta parte exige que exatamente três dígitos numéricos apareçam em seqüência.
- (\s|.|-) Esta parte exige que um espaço, um ponto ou um hífen exista após o número de três dígitos.
- \d\d\d\d Esta parte exige que exatamente quatro dígitos numéricos apareçam em seqüência.
A expressão regular acima irá corresponder aos valores do exemplo a seguir:
- (425)555.0100
- 425 555 0100
- 425. 555-0100
- (425) 555-0100
- 425-555-0100
- (425) 555-0100
Criando uma Regra de Transporte que Use uma Expressão Regular
Este exemplo cria uma regra de transporte no Shell que usa expressões regulares para corresponder CPFs 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"
Este exemplo permite que você exiba a nova regra de transporte.
Get-TransportRule "Social Security Number Block Rule" | Format-List