Expressions régulières

MDaemon Email Server

Navigation:  Menu Sécurité > Filtre de contenu et antivirus > Éditeur du Filtre de contenu > Règles >

Expressions régulières

Print this Topic Previous pageReturn to chapter overviewNext page

Le système de Filtre de contenu supporte également les recherches d’ "expressions régulières". Ce système permet de rechercher des modèles de texte. Les expressions régulières contiennent à la fois du texte en clair et des caractères spécifiques qui indiquent le type de correspondance à effectuer. Cela rend vos règles de Filtre de contenu plus efficaces et précises.

Que sont les expressions régulières ?

Une expression régulière (regexp) est un modèle de texte composé d’une association de caractères spécifiques, appelés métacaractères, et de caractères alphanumériques, ou "littéraux" (abc, 123, etc.). Le modèle sert à trouver des correspondances dans la chaîne de texte. Les expressions régulières sont utilisées principalement pour chercher et remplacer des correspondances avec du texte.

Les métacaractères sont des caractères spéciaux qui possèdent des fonctions particulières dans les expressions régulières. MDaemon accepte les métacaractères suivants :

\ | () [] ^ $ * + ? . <>

Métacaractère

Description

\

Si vous utilisez la barre oblique inverse ("\") devant un métacaractère, ce dernier sera traité comme un caractère littéral. Cela est nécessaire si vous voulez que l’expression régulière cherche l’un des caractères spéciaux utilisés en tant que métacaractères. Par exemple, pour chercher le signe "+", votre expression doit inclure "\+".

|

Le caractère "|" s’utilise lorsque vous souhaitez qu’une expression, située à côté de ce caractère, trouve une correspondance de la chaîne cible. L’expression régulière "abc|xyz" trouvera toutes les occurrences, à la fois de "abc" et de "xyz" lors de la recherche d’une chaîne de texte.

[...]

Si un ensemble de caractères est inclus entre crochets, cela signifie que tous ces caractères doivent correspondre à la chaîne de texte recherchée. Les séries de caractères entre crochets sont séparées par des tirets ("-"). Par exemple, la recherche de la chaîne "abc" avec l‘expression régulière "[a-z]" donnera trois correspondances : "a", "b" et "c". En utilisant l’expression "[az]", une seule correspondance sera trouvée : "a".

^

Ce caractère indique le début d'une ligne. Dans la chaîne cible "abc ab a", l’expression "^a" donnera lieu à une correspondance : le premier caractère de la chaîne cible. L’expression régulière "^ab" donnera également une correspondance : les deux premiers caractères de la chaîne cible.

[^...]

Ce caractère placé après le crochet gauche possède un sens différent. Il est utilisé pour exclure de la chaîne cible, les autres caractères inclus entre crochets. L’expression "[^0-9]" indique que le caractère cible ne doit pas être un chiffre.

(...)

La parenthèse indique l’ordre d’évaluation du modèle. Elle sert aussi d’expression marquée pouvant être utilisée dans les expressions chercher et remplacer.

Les résultats d’une recherche, effectuée avec une expression régulière, sont conservés temporairement et peuvent être utilisés dans l’expression remplacer pour créer une autre expression. Dans l’expression remplacer, il est possible d’inclure un caractère "&" ou "\0" qui sera remplacé par la sous-chaîne trouvée par l’expression régulière lors de la recherche. Ainsi, si l’expression chercher "a(bcd)e" trouve une correspondance de sous-chaîne, une expression remplacer "123-&-123" ou "123-\0-123" remplacera le texte trouvé par "123-abcde-123".

De même, vous pouvez utiliser les caractères spéciaux "\1", "\2", "\3", etc. dans l’expression remplacer. Ces caractères seront remplacés par les résultats de l’expression marquée, au lieu de la totalité de la sous-chaîne. Le nombre qui suit la barre oblique inversée détermine l’expression marquée que vous voulez référencer (dans le cas d’une expression régulière contenant plus d’une expression marquée). Par exemple, si l'expression chercher est « (123)(456) et que votre expression remplacer est « a-\2-b\1 », une sous-chaîne sera alors remplacée par « a-456-b-123 », tandis qu’une expression remplacer « a-\0-b » sera remplacée par « a-123456-b ».

$

Le symbole dollar ("$") indique la fin de la ligne. Dans la chaîne de texte "13 321123", l’expression "3$" donne lieu à une correspondance : le dernier caractère de la chaîne. L’expression régulière "123$" donnera également une correspondance : les trois derniers caractères de la chaîne cible.

*

L’astérisque ("*") indique que le caractère situé à sa gauche doit correspondre à aucune ou plusieurs occurrences du caractère dans une rangée. Ainsi, "1*abc" correspondra aux textes "111abc" et "abc".

+

Semblable à l’astérisque, le symbole "+" indique que le caractère à sa gauche doit correspondre à une ou plusieurs occurrences du caractère dans une rangée. Ainsi, "1*abc" correspondra au texte "111abc" mais pas à "abc".

?

Le point d’interrogation ("?") indique que le caractère à sa gauche doit correspondre à aucune ou une seule correspondance. Ainsi, "1?abc" correspondra au texte "abc", et à la partie "1abc" de "111abc".

.

Le métacaractère qui représente un point (".") correspondra à n’importe quel caractère. Ainsi, ".+abc" correspondra à "123456abc", et "a.c" correspondra à "aac", "abc", "acc", etc.

Conditions et actions concernées

Les expressions régulières peuvent être utilisées dans toutes les conditions du Filtre de contenu relatives aux en-têtes comme, par exemple, toute règle qui utilise la condition "if the FROM HEADER contains". Les expressions régulières peuvent également être utilisées dans la condition "if the MESSAGE BODY contains".

Les expressions régulières peuvent être utilisées dans deux actions du Filtre de contenu : "Search and Replace Words in a Header" et "Search and Replace Words in the Message Body".

Les expressions régulières utilisées dans les conditions du Filtre de contenu sont sensibles à la casse.

La sensibilité à la casse dans les expressions régulières, utilisées dans les actions du Filtre de contenu, est facultative. Lorsque vous créez une expression dans les actions de la règle, vous pouvez choisir d’activer ou de désactiver la sensibilité à la casse.

Paramétrer une expression régulière dans une condition

Pour paramétrer l’utilisation d’une expression régulière dans une condition relative à un en-tête ou au corps d’un message :

1.Dans la boîte de dialogue Créer une règle, cochez la case qui correspond à la condition relative à l’en-tête ou au corps du message, que vous souhaitez ajouter à la règle.
2.Dans la zone de description située en bas de la boîte de dialogue Créer une règle, cliquez sur le lien contains specific strings qui correspond à la condition que vous venez de sélectionner. La boîte de dialogue Texte à rechercher s’ouvre.
3.Cliquez sur le lien contains dans la zone Chaînes à vérifier.
4.Sélectionnez Matches Regular Expression dans la liste déroulante, puis cliquez sur OK.
5.Si vous avez besoin d’aide pour créer votre expression régulière, ou que vous souhaitez la tester, cliquez sur le bouton Tester l’expression régulière. Si vous ne voulez pas utiliser cette boîte de dialogue pour tester l’expression, saisissez votre expression régulière dans la zone de texte appropriée, cliquez sur Ajouter, puis passez à l’étape 8.
6.Entrez votre expression régulière dans la zone de texte Texte à rechercher. Pour simplifier le processus, il existe un menu de raccourcis que vous pouvez utiliser pour insérer facilement les métacaractères de votre choix dans votre expression régulière. Cliquez sur le bouton ">" pour accéder à ce menu. Le métacaractère correspondant à l’option choisie dans ce menu sera inséré dans l’expression, et le point d’insertion du texte sera déplacé à l’endroit associé au caractère.
7.Entrez, dans la zone correspondante, le texte que vous voulez utiliser pour tester votre expression, puis cliquez sur Tester. Lorsque le test est terminé, cliquez sur OK.
8.Cliquez sur OK.
9.Continuez normalement la création de la règle.

Paramétrer une expression régulière dans une action

Pour paramétrer l’utilisation d’une expression régulière dans une action Search and replace :

1.Dans la boîte de dialogue Créer une règle, cochez la case qui correspond à l’action Search and replace… que vous voulez ajouter à la règle.
2.Dans la zone de description située en bas de la boîte de dialogue Créer une règle, cliquez sur le lien specify information qui correspond à l’action que vous venez de sélectionner. La boîte de dialogue Chercher et remplacer s’ouvre.
3.Si vous avez choisi l’action Search and replace within header à l’étape 1, choisissez, dans la liste déroulante, l’en-tête que vous voulez chercher, ou, s’il n’y est pas, entrez-le dans la zone de texte. Sinon, passez à l’étape suivante.
4.Saisissez l’expression que vous souhaitez rechercher dans cette action. Pour simplifier le processus, il existe un menu de raccourcis que vous pouvez utiliser pour insérer facilement les métacaractères de votre choix dans votre expression régulière. Cliquez sur le bouton ">" pour accéder à ce menu. Le métacaractère correspondant à l’option que vous aurez choisie dans ce menu sera inséré dans l’expression, et le point d’insertion du texte sera déplacé à l’endroit associé au caractère.
5.Saisissez dans le champ Remplacer par l’expression que vous souhaitez utiliser dans cette action. Comme pour l’expression chercher, il existe un menu de raccourcis pour choisir les métacaractères à insérer dans cette option. Ne remplissez pas ce champ si vous souhaitez que l’expression recherchée soit supprimée et non remplacée par une autre.
6.Cochez la case Expression exacte pour que l'expression soit sensible à la casse.
7.Cochez Expression régulière pour que les chaînes à chercher et à remplacer soient traitées comme des expressions régulières. Sinon, elles seront traitées comme de simples correspondances de sous-chaînes et seront remplacées. La recherche s’effectuera sur une correspondance littérale exacte du texte, au lieu de traiter les chaînes comme des expressions régulières.
8.Si vous n’avez pas besoin de tester votre expression, passez à l’étape suivante. Dans le cas contraire, cliquez sur Test. Dans la boîte de dialogue Test de la fonction : Rechercher et remplacer, saisissez les expressions à chercher et à remplacer, ainsi que le texte à tester, puis cliquez sur le bouton Tester. Lorsque le test des expressions régulières est terminé, cliquez sur OK.
9.Continuez normalement la création de la règle.

MDaemon utilise la librairie PRCE (PERL Compatible Regular Expression). Plus d'informations sur cette implémentation sont disponibles sur les sites : http://www.pcre.org/ et http://perldoc.perl.org/perlre.html (en anglais).

Pour en savoir plus sur les expressions régulières, consultez : Mastering Regular Expressions, Third Edition publié par O'Reilly Media, Inc (en anglais).