Share via


Expressões regulares em regras de transporte

 

Aplica-se a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Tópico modificado em: 2009-04-09

Este tópico descreve a implementação de expressões regulares que possam ser usadas com predicados nas regras de transportes. Predicados são usados por condições e exceções para determinar se uma ou mais ações configuradas devem ser aplicadas a uma mensagem de email.

Para obter mais informações sobre regras de transporte, consulte Visão geral de regras de transporte.

O que são expressões regulares?

Em primeiro lugar, você deve entender o que é uma expressão simples. Uma expressão simples representa um valor específico que você deseja corresponder a uma condição ou exceção. 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. 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 de texto literais (normais), que indicam o texto que deve existir na cadeia de caracteres de destino, e metacaracteres, que indicam ou controlam 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 caracteres específicos.

A capacidade de localizar padrões de texto em uma mensagem de email permite que você faça a correspondência de predicados e dados em mensagens que podem ser alterados dinamicamente. Exemplos desse tipo de dados são CPFs e números de patente. 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 variáveis do valor que deseja detectar. Usando expressões regulares, você pode configurar o predicado para que procure o padrão de CPFs ou números de patente em uma mensagem.

Você pode usar expressões regulares em qualquer predicado de regra de condição ou de exceção, exceto se "for uma notificação de entrega". Para obter mais informações sobre quais predicados aceitam correspondência de padrões de expressões regulares, consulte Predicados da regra de transporte.

Implementando expressões regulares

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. A tabela 1 lista todas as cadeias de caracteres padrão que você pode usar para criar uma expressão regular de correspondência de padrões.

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. Teste suas expressões regulares em um ambiente de teste antes de implementá-las na produção.

Tabela 1 Cadeias de caracteres padrão

Cadeia de caracteres padrão Descrição

\S

A cadeia de caracteres padrão \S corresponde a qualquer caracter ú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 do padrão \w corresponde a qualquer caractere Unicode único categorizado como uma letra ou dígito decimal.

|

A barra vertical ( | ) executa uma função OU.

*

O caracter curinga ( * ) corresponde a zero ou mais instâncias do caracter anterior. Por exemplo, ab*c corresponde às seguintes cadeias de caracteres: ac, abc, abbbbc.

( )

Parênteses agem como delimitadores de agrupamento. Por exemplo, a(bc)* corresponde às seguintes cadeias de caracteres: a, abc, abcbc, abcbcbc, e assim por diante.

\

A barra invertida ( \ ) é o caractere de escape usado em conjunto com um caractere especial. Os seguintes caracteres especiais são usados em cadeias de caracteres padrão:

  • Barra invertida: \

  • Barra vertical: |

  • Asterisco: *

  • Parêntese de abertura: (

  • Parêntese de fechamento: )

  • Circunflexo: ^

  • Símbolo de cifrão: $

Por exemplo, se você deseja fazer a correspondência de uma cadeia de caracteres que contém (525), você deve digitar \(525\).

\\

Duas barras invertidas são usadas quando se deseja que o caractere barra invertida seja reconhecido como uma barra invertida e não como um caractere de escape. Por exemplo, se você deseja fazer a correspondência de uma cadeia de caracteres que contém \d, você deve digitar \\d.

^

O circunflexo ( ^ ) indica que a cadeia de caracteres padrão após o circunflexo deve existir no início do texto que está sendo correspondido. Por exemplo, ^fred@contoso corresponde a fred@contoso.com e fred@contoso.co.uk mas não a alfred@contoso.com.

Esse caractere também pode ser usado com o cifrão ( $ ) para especificar uma cadeia de caracteres exata para correspondência. Por exemplo, ^kim@contoso.com$ corresponde somente a kim@contoso.com e não corresponde a nada mais, como kim@contoso.com.au.

$

O cifrão ($) indica que a cadeia de caracteres padrão precedente deve existir no final do texto que está sendo correspondido. Por exemplo, contoso.com$ corresponde a adam@contoso.com e kim@research.contoso.com, mas não corresponde a kim@contoso.com.au.

Esse caractere também pode ser usado com o circunflexo (^) para especificar uma cadeias de caracteres exata para correspondência. Por exemplo, ^kim@contoso.com$ corresponde somente a kim@contoso.com e não corresponde a nada mais, como chris@sales.contoso.com.

Usando a tabela 1, você pode construir uma expressão regular que faça correspondência com o padrão dos dado 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 padrão para determinar como ela se aplica aos dados que você está correspondendo. Em seguida determine qual cadeia de caracteres padrão na tabela 1 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.

Por exemplo, as expressões regulares a seguir correspondem 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. A expressão regular a seguir corresponde aos três formatos de número de telefone:

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

Você pode analisar o exemplo anterior da seguinte maneira:

  • (\\()* Esta parte faz com que o primeiro parêntese seja opcional. Como o parêntese de fechamento também é um delimitador de expressão regular, ele deve ser interpretado em escape, usando-se duas barras invertidas \\. Os parênteses externos (()) agrupam os caracteres \\( de forma que o caractere curinga * possa agir sobre os caracteres \\( para fazer com que eles sejam opcionais.

  • \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 parêntese de abertura, um espaço ou um ponto estejam presentes depois do 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 especificado na cadeia de caracteres que está sendo correspondida.

  • \d\d\d   Esta parte exige que exatamente três dígitos numéricos apareçam em seqüência.

  • (-|.) Esta parte exige que exista um hífen ou um ponto depois do número de três dígitos. Como o hífen e o ponto existem dentro dos delimitadores de agrupamento, apenas um dos caracteres pode existir neste local na cadeia de caracteres que está sendo correspondida.

  • \d\d\d\d   Esta parte exige que exatamente quatro dígitos numéricos apareçam em seqüência.

Um exemplo de regra de transporte que usa uma expressão regular

O exemplo a seguir mostra como usar expressões regulares quando você cria uma nova regra no Shell de Gerenciamento do Exchange:

Para criar uma regra de transporte que use expressões regulares para corresponder Números de Seguro Social (nos EUA) no assunto de uma mensagem de email

  1. Execute os seguintes comandos:

    $Condition = Get-TransportRulePredicate SubjectMatches
    $Condition.Patterns = @("\d\d\d-\d\d-\d\d\d\d")
    $Action = Get-TransportRuleAction RejectMessage
    $Action.RejectReason = "The transmission of Social Security Numbers is prohibited."
    New-TransportRule -Name "Social Security Number Block Rule" -Conditions $Condition -Actions $Action 
    
  2. Execute o comando a seguir para visualizar a nova regra de transporte:

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

Quando esse comando Get-TransportRule for executado, a seguinte informação será exibida:

Identity           : Social Security Number Block Rule,753ed939-1227-4b2a-a8e0-ec49b0615f30
Name               : Social Security Number Block Rule
RuleCollectionName : Transport
Priority           : 0
Comments           :
ManuallyModified   : False
Conditions         : {SubjectMatches}
Exceptions         :
Actions            : {RejectMessage}
State              : Enabled
IsValid            : True
ObjectState        : Unchanged

Para obter mais informações

Para obter informações detalhadas sobre sintaxe e parâmetros de cada comando, consulte os seguintes tópicos:

Para obter mais informações sobre regras de transporte, consulte os tópicos a seguir: