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é dune 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 lexpression régulière cherche lun 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 "|" sutilise lorsque vous souhaitez quune expression, située à côté de ce caractère, trouve une correspondance de la chaîne cible. Lexpression régulière "abc|xyz" trouvera toutes les occurrences, à la fois de "abc" et de "xyz" lors de la recherche dune 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 lexpression régulière "[a-z]" donnera trois correspondances : "a", "b" et "c". En utilisant lexpression "[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", lexpression "^a" donnera lieu à une correspondance : le premier caractère de la chaîne cible. Lexpression 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. Lexpression "[^0-9]" indique que le caractère cible ne doit pas être un chiffre. |
(...) |
La parenthèse indique lordre dévaluation du modèle. Elle sert aussi dexpression marquée pouvant être utilisée dans les expressions chercher et remplacer. Les résultats dune recherche, effectuée avec une expression régulière, sont conservés temporairement et peuvent être utilisés dans lexpression remplacer pour créer une autre expression. Dans lexpression remplacer, il est possible dinclure un caractère "&" ou "\0" qui sera remplacé par la sous-chaîne trouvée par lexpression régulière lors de la recherche. Ainsi, si lexpression 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 lexpression remplacer. Ces caractères seront remplacés par les résultats de lexpression marquée, au lieu de la totalité de la sous-chaîne. Le nombre qui suit la barre oblique inversée détermine lexpression marquée que vous voulez référencer (dans le cas dune expression régulière contenant plus dune 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 quune 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", lexpression "3$" donne lieu à une correspondance : le dernier caractère de la chaîne. Lexpression régulière "123$" donnera également une correspondance : les trois derniers caractères de la chaîne cible. |
* |
Lasté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 à lasté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 dinterrogation ("?") 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 à nimporte 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 dactiver ou de désactiver la sensibilité à la casse. |
Paramétrer une expression régulière dans une condition
Pour paramétrer lutilisation dune expression régulière dans une condition relative à un en-tête ou au corps dun message :
1. | Dans la boîte de dialogue Créer une règle, cochez la case qui correspond à la condition relative à len-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 souvre. |
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 daide pour créer votre expression régulière, ou que vous souhaitez la tester, cliquez sur le bouton Tester lexpression régulière. Si vous ne voulez pas utiliser cette boîte de dialogue pour tester lexpression, 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 à loption choisie dans ce menu sera inséré dans lexpression, et le point dinsertion du texte sera déplacé à lendroit 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 lutilisation dune 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 à laction 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 à laction que vous venez de sélectionner. La boîte de dialogue Chercher et remplacer souvre. |
3. | Si vous avez choisi laction Search and replace within header à létape 1, choisissez, dans la liste déroulante, len-tête que vous voulez chercher, ou, sil ny est pas, entrez-le dans la zone de texte. Sinon, passez à létape suivante. |
4. | Saisissez lexpression 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 à loption que vous aurez choisie dans ce menu sera inséré dans lexpression, et le point dinsertion du texte sera déplacé à lendroit associé au caractère. |
5. | Saisissez dans le champ Remplacer par lexpression que vous souhaitez utiliser dans cette action. Comme pour lexpression 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 lexpression 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 seffectuera sur une correspondance littérale exacte du texte, au lieu de traiter les chaînes comme des expressions régulières. |
8. | Si vous navez 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). |