Expressions régulières dans les règles de transport

 

S’applique à : Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Dernière rubrique modifiée : 2009-04-09

Cette rubrique décrit l'implémentation d'expressions régulières utilisables avec des prédicats sur des règles de transport. Les prédicats sont utilisés par des conditions et des exceptions pour déterminer si une ou plusieurs actions configurées doivent être appliquées à un message électronique.

Pour plus d'informations sur les règles de transport, consultez la rubrique Vue d'ensemble des règles de transport.

Qu'est-ce que les expressions régulières ?

Premièrement, vous devez comprendre ce qu'est une expression régulière. Une expression simple représente une valeur spécifique que vous voulez mettre en correspondance avec une condition ou une exception. Un exemple d'expression simple est le titre d'un document dont votre organisation ne veut pas qu'il soit distribué à l'extérieur. Un élément de données dans un message électronique doit correspondre exactement à une expression simple pour satisfaire à une condition ou une exception dans des règles de transport.

Une expression régulière est une notation concise et flexible servant à rechercher des modèles de texte dans un message. La notation se compose de deux types de caractères de base : les caractères de texte littéral (normal) qui indiquent le texte qui doit figurer dans la chaîne cible et les métacaractères qui indiquent ou contrôlent les variations possibles du texte dans la chaîne cible. Vous pouvez utiliser des expressions régulières pour analyser rapidement des messages électroniques afin d'y trouver des modèles de caractères spécifiques.

La capacité de rechercher des modèles de texte dans un message électronique permet d'établir une correspondance entre des prédicats et des données de messages qui changent de façon dynamique. Ces données sont, par exemple, des numéros de sécurité sociale ou des numéros de brevets. Vous ne pouvez pas raisonnablement mettre ces données en correspondance avec une expression simple parce qu'une telle expression requiert que vous entriez chaque variante de la valeur que vous voulez détecter. Les expressions régulières permettent de configurer le prédicat pour rechercher le modèle de numéro de sécurité sociale ou de numéro de brevet dans un message.

Vous pouvez utiliser des expressions régulières dans tout prédicat de condition ou de règle d'exception, à l'exception de « is a delivery report ». Pour plus d'informations sur les prédicats qui acceptent la mise en correspondance de modèles d'expression régulière, consultez la rubrique Prédicats de règle de transport.

Implémentation d'expressions régulières

Dans Exchange Management Shell, vous pouvez utiliser des expressions régulières dans tout prédicat qui accepte la propriété de prédicat Patterns. Dans Exchange Management Console, vous pouvez utiliser des expressions régulières avec toute condition ou exception contenant les mots with text patterns. Le tableau 1 répertorie toutes les chaînes de modèle que vous pouvez utiliser pour créer une expression régulière de mise en correspondance de modèle.

CautionAttention :
Vous devez soigneusement tester les expressions régulières que vous construisez pour vous assurer qu'elles produisent les résultats escomptés. Une expression régulière mal configurée pourrait produire des correspondances inattendues et entraîner un comportement de règle de transport indésirable. Testez vos expressions régulières dans un environnement de test avant de les implémenter dans un environnement de production.

Tableau 1   Chaînes de modèle

Chaîne de modèle Description

\S

La chaîne de modèle \S établit une correspondance avec tout caractère autre qu'une espace.

\s

La chaîne de modèle \s établit une correspondance avec toute espace vide simple.

\D

La chaîne de modèle \D établit une correspondance avec tout caractère non numérique.

\d

La chaîne de modèle \d établit une correspondance avec tout caractère numérique simple.

\w

La chaîne de modèle \w établit une correspondance avec tout caractère Unicode classé comme lettre ou chiffre décimal.

|

Le caractère | exécute une fonction OR.

*

Le caractère générique * établit une correspondance avec zéro ou plusieurs instances du caractère précédent. Par exemple, ab*c établit une correspondance avec les chaînes suivantes : ac, abc, abbbbc.

( )

Les parenthèses servent de délimiteurs de regroupement. Par exemple, a(bc)* établit une correspondance avec les chaînes suivantes : a, abc, abcbc, abcbcbc, etc.

\

La barre oblique inverse ( \ ) est le caractère d'échappement utilisé avec un caractère spécial. Les caractères spéciaux suivants sont utilisés dans les chaînes de modèle :

  • Barre oblique inverse : \

  • Barre verticale : |

  • Astérisque : *

  • Parenthèse ouvrante : (

  • Parenthèse fermante : )

  • Accent circonflexe : ^

  • Dollar : $

Par exemple, si vous voulez établir une correspondance avec une chaîne contenant (525), tapez \(525\).

\\

Utilisez deux barres obliques inverses lorsque vous voulez qu'une barre oblique inverse soit reconnue en tant que telle, et non comme un caractère d'échappement. Par exemple, si vous voulez établir une correspondance avec une chaîne contenant \d, tapez \\d.

^

L'accent circonflexe (^) indique que la chaîne de modèle qui suit doit se trouver au début de la chaîne de texte recherchée. Par exemple, ^fred@contoso établit une correspondance avec fred@contoso.com et fred@contoso.co.uk, pas avec alfred@contoso.com.

Ce caractère peut également être utilisé avec le signe dollar ($) pour spécifier une correspondance de chaîne exacte. Par exemple, ^kim@contoso.com$ établit une correspondance uniquement avec kim@contoso.com et rien d'autre comme kim@contoso.com.au.

$

Le signe dollar ($) indique que la chaîne de modèle qui précède doit se trouver à la fin de la chaîne de texte recherchée. Par exemple, contoso.com$ établit une correspondance avec adam@contoso.com et kim@research.contoso.com, pas avec kim@contoso.com.au.

Ce caractère peut également être utilisé avec l'accent circonflexe (^) pour spécifier une correspondance de chaîne exacte. Par exemple, ^kim@contoso.com$ établit une correspondance uniquement avec kim@contoso.com et rien d'autre comme chris@sales.contoso.com.

En vous référant au tableau 1, vous pouvez construire une expression régulière qui met en correspondance le modèle des données que vous recherchez. En travaillant de gauche à droite, examinez chaque caractère ou groupe de caractères dans les données que vous voulez mettre en correspondance. Lisez la description de chaque chaîne de modèle pour déterminer la manière dont elle s'applique aux données que vous recherchez. Ensuite, déterminez la chaîne de modèle dans le tableau 1 qui représente ce caractère ou groupe de caractères, puis ajoutez cette chaîne de modèle à l'expression régulière. Lorsque vous avez terminé, vous disposez d'une expression régulière entièrement construite.

Par exemple, l'expression régulière suivante correspond à des numéros de téléphone nord-américains aux formats 425 555-0100 et 425.555.0100 :

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

Vous pouvez développer cet exemple en ajoutant le format de numéro de téléphone (425) 555-0100 où l'indicatif de la zone est entre parenthèses. L'expression régulière suivante établit une correspondance avec les trois formats de numéro de téléphone :

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

Vous pouvez analyser l'exemple précédent comme suit :

  • (\\()*   Cette portion rend la première parenthèse facultative. Comme la parenthèse fermante est également un délimiteur d'expression régulière, il convient de la faire précéder des caractères d'échappement, soit deux barres obliques inverses \\. Les parenthèses (()) regroupent les caractères \\( de façon à ce que le caractère générique * puisse agir sur les caractères \\( pour les rendre facultatifs.

  • \d\d\d   Cette portion requiert la présence de trois caractères numériques.

  • (\\)|\s|.)   Cette portion requiert la présence d'une parenthèse ouvrante, d'une espace ou d'un point derrière le nombre à trois chiffres. Les chaînes de recherche de caractères sont placées entre des délimiteurs de groupe et séparées par des caractères |. Cela signifie qu'un seul des caractères spécifiés dans les délimiteurs de regroupement peut exister dans cette position dans la chaîne recherchée.

  • \d\d\d   Cette portion requiert la présence de trois caractères numériques.

  • (-|.)   Cette portion requiert la présence d'un tiret ou d'un point derrière le nombre à trois chiffres. Comme le tiret et le point existent dans les délimiteurs de regroupement, il ne peut y avoir que l'un des deux caractères dans cette position dans la chaîne recherchée.

  • \d\d\d\d   Cette portion requiert la présence de quatre caractères numériques.

Exemple de règle de transport utilisant une expression régulière

L'exemple suivant montre comment utiliser des expressions régulières pour créer une règle dans Exchange Management Shell :

Création d'une règle de transport utilisant des expressions régulières pour établir une correspondance avec des numéros de sécurité sociale dans l'objet d'un message électronique

  1. Exécutez les commandes suivantes :

    $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. Pour afficher la nouvelle règle de transport, exécutez la commande suivante :

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

Lors de l'exécution de cette commande Get-TransportRule, les informations suivantes s'affichent :

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

Pour plus d'informations

Pour obtenir des informations détaillées sur la syntaxe et les paramètres de chaque commande, consultez les rubriques suivantes :

Pour plus d'informations sur les règles de transport, consultez les rubriques suivantes :