Vues :

Les expressions rationnelles sont utilisées pour faire correspondre des chaînes de caractères. Les tableaux suivants montrent des exemples courants d'expressions rationnelles. Pour spécifier une expression rationnelle, ajoutez un opérateur « .REG. » devant ce modèle.

Un certain nombre de sites Web et de didacticiels sont disponibles en ligne. Parmi ces sites, vous pouvez consulter le site PerlDoc à l'adresse suivante :

http://www.perl.com/doc/manual/html/pod/perlre.html

Avertissement :

Les expressions rationnelles constituent un outil puissant de correspondance de chaînes. C'est pourquoi Trend Micro recommande que les administrateurs qui choisissent d'utiliser les expressions rationnelles soient familiarisés et expérimentés en ce qui concerne la syntaxe de ces expressions. Les expressions rationnelles n'utilisant pas une syntaxe correcte peuvent occasionner des dégâts considérables au niveau des performances. Trend Micro recommande de commencer par des expressions rationnelles simples n'utilisant pas de syntaxe complexe. Pour introduire une nouvelle règle, utilisez l'action d'archivage et étudiez la façon dont Messaging Security Agent gère les messages à l'aide de cette règle. Si vous êtes sûr que la règle ne peut pas avoir de conséquences inattendues, vous pouvez modifier votre action.

Exemples d'expressions rationnelles

Les tableaux suivants montrent des exemples courants d'expressions rationnelles. Pour spécifier une expression rationnelle, ajoutez un opérateur « .REG. » devant ce modèle.

Tableau 1. Dénombrement et groupement

Élément

Signification

Exemple

.

Un point peut représenter n'importe quel caractère excepté les caractères de nouvelle ligne.

ar. correspond à : art, ars, are, arc, ara, etc.

a.r correspond à : amer, amour, etc.

*

L'astérisque indique zéro ou une occurrence ou plus de l'élément qui précède.

cre* correspond à : cr, cre, cree, creee, creeee, etc.

+

Le signe plus indique une occurrence ou plus de l'élément qui précède.

cre+ correspond à : cre, cree, creee, creeee, etc. mais ne correspond pas à :cr

?

Le point d'interrogation indique zéro ou une occurrence de l'élément qui précède.

f?l correspond à fl ou fil, mais ne correspond pas à : fiil, fiiil, etc.

( )

Les parenthèses indiquent que le groupe qu'elles incluent doit être considéré comme une seule entité.

d(ent)+ correspond à dent ou dentent ou dententent, etc. Le signe + s'applique à l'élément entre parenthèses. L'expression rationnelle recherche d suivi d'une ou plusieurs occurrences de « ent. »

[ ]

Les crochets indiquent une série de caractères.

d[aeiouy]+ correspond à : da, de, di, do, du, dy, daa, dae, dai, etc. Le signe + s'applique à la série de caractères entre parenthèses. L'expression rationnelle recherche d suivi d'un ou plusieurs caractères de la série [aeioy].

d[A-Z] correspond à dA, dB, dC, etc. jusqu'à dZ. La série entre crochets représente l'intervalle de lettres majuscules de A à Z.

[ ^ ]

Un accent circonflexe compris dans une série entre crochets entraîne la négation de la série ou de l'intervalle spécifié, c'est-à-dire que l'expression rationnelle correspond à n'importe quel caractère n'étant pas inclus dans la série ou l'intervalle.

d[^aeiouy] correspond à : db, dc ou dd, d9, d#--d suivi de n'importe quel caractère n'étant pas une voyelle.

{ }

Les accolades définissent le nombre d'occurrences de l'élément qui précède. Une valeur unique entre accolades indique que le nombre d'occurrences doit correspondre à ce chiffre. Deux chiffres séparés par une virgule représentent une série de nombres d'occurrences valides du caractère qui précède. Un chiffre unique suivi d'une virgule signifie qu'il n'y a pas de limite supérieure.

da{3} correspond à : daaa--d suivi de 3 occurrences de « a », pas plus. da{2,4} correspond à : daa, daaa et daaaa (mais ne correspond pas à daaaaa)--d suivi de 2, 3 ou 4 occurrences de « a ». da{4,} correspond à : daaaa, daaaaa, daaaaaa, etc.--d suivi de 4 occurrences de « a » ou plus.

Tableau 2. Classes de caractères (sténographie)

Élément

Signification

Exemple

\d

Tout caractère numérique, équivalent de la classe [0-9] ou [[:digit:]]

\d correspond à 1, 12, 123, etc., mais ne correspond pas à 1b7--un ou plusieurs caractères numériques quels qu'ils soient.

\D

Tout caractère non numérique ; équivalent de la classe [^0-9] ou [^[:digit:]]

\D correspond à : a, ab, ab&, mais ne correspond pas à 1--un ou plusieurs caractères quelconques sauf 0, 1, 2, 3, 4, 5, 6, 7, 8, ou 9.

\w

Tout caractère de « mot » --c'est-à-dire tout caractère alphanumérique; équivalent à la classe [_A-Za-z0-9] ou [_[:alnum:]]

\w correspond à a, ab, a1, mais ne correspond pas à !&--une ou plusieurs lettres minuscules ou majuscules ou un ou plusieurs chiffres, mais pas de signes de ponctuation ou autres caractères spéciaux.

\W

Tout caractère non alphanumérique ; équivalent de la classe [^_A-Za-z0-9] ou [^_[:alnum:]]

\W correspond à *, &, mais ne correspond pas à ame ou à a1--un ou plusieurs caractères quelconques sauf lettres en majuscules ou en minuscules et chiffres.

\s

Tout élément marquant un espace : espace, caractère de nouvelle ligne, tabulation, espace insécable, etc. ; équivalent de la classe [[:space]]

légume\s correspond à « légume » suivi d'un élément d'espacement quelconque. Ainsi, la phrase « J'ai un légume dans mon jardin » déclenche l'expression rationnelle, mais pas « J'aime les légumes du jardin ».

\S

Tout élément ne marquant pas un espace ; tout élément autre qu'un espace, caractère de nouvelle ligne, tabulation, espace insécable, etc. ; équivalent à [^[:space]]

légume\s correspond à « légume » suivi d'un élément ne marquant pas un espace. Ainsi, la phrase « J'aime les légumes du jardin » déclenche l'expression rationnelle, mais pas « J'ai un légume dans mon jardin ».
Tableau 3. Classes de caractères

Élément

Signification

Exemple

[:alpha:]

Tout caractère alphabétique

.REG. [[:alpha:]] correspond à abc, def, xxx, mais ne correspond pas à 123 ou à @#$.

[:digit:]

Tout caractère numérique ; équivalent à la classe \d

.REG. [[:digit:]] correspond à 1, 12, 123, etc.

[:alnum:]

Tout « mot » --c'est-à-dire, tout caractère alphanumérique ; équivalent à la classe \w

.REG. [[:alnum:]] correspond à abc, 123, mais ne correspond pas à ~!@.

[:space:]

Tout élément marquant un espace ; espace, caractère de nouvelle ligne, tabulation, espace insécable, etc. ; équivalent à \s

.REG. (légume)[[:space:]] correspond à « légume » suivi d'un élément d'espacement quelconque. Ainsi, la phrase « J'ai un légume dans mon jardin » déclenche l'expression rationnelle, mais pas « J'aime les légumes du jardin ».

[:graph:]

Tout caractère excepté les caractères d'espacement, caractères de contrôle et équivalents

.REG. [[:graph:]] correspond à 123, abc, xxx, ><”, mais ne correspond pas à un espace ou un caractère de contrôle.

[:print:]

Tout caractère (de la même façon que [:graph:]) mais inclut les espaces

.REG. [[:print:]] correspond à 123, abc, xxx, ><”, et aux espaces.

[:cntrl:]

Tout caractère de contrôle (comme CTRL + C, CTRL + X)

.REG. [[:cntrl:]] correspond à 0x03, 0x08, mais ne correspond pas à abc, 123, !@#.

[:blank:]

Caractères d'espacement et de tabulation

.REG. [[:blank:]] correspond aux caractères d'espacement et de tabulation, mais ne correspond pas à 123, abc, !@#

[:punct:]

Caractères de ponctuation

.REG. [[:punct:]] correspond à ; : ? ! ~ @ # $ % & * ‘ “ , etc., mais ne correspond pas à 123, abc

[:lower:]

Tout caractère alphabétique en minuscules (remarque : l'option « Résultats sensibles à la casse » doit être activée, sans quoi la fonction fonctionne comme [:alnum:])

.REG. [[:lower:]] correspond à abc, Def, sTress, Do, etc., mais ne correspond pas à ABC, DEF, STRESS, DO, 123, !@#.

[:upper:]

tout caractère alphabétique en majuscules (remarque : l'option « Résultats sensibles à la casse » doit être activée, sans quoi la fonction fonctionne comme [:alnum:])

.REG. [[:upper:]] correspond à ABC, DEF, STRESS, DO, etc., mais ne correspond pas à abc, Def, Stress, Do, 123, !@#.

[:xdigit:]

Chiffres autorisés dans un nombre hexadécimal (0-9a-fA-F)

.REG. [[:xdigit:]] correspond à 0a, 7E, 0f, etc.

Tableau 4. Motifs d'ancrage

Élément

Signification

Exemple

^

Indique le début d'une chaîne.

^(malgré) correspond à toute section de texte commençant par « malgré ». Ainsi la phrase « malgré le fait que j'aie des légumes dans mon jardin » déclenche l'expression rationnelle, mais pas « Le fait que j'aie des légumes dans mon jardin malgré tout ».

$

Indique la fin d'une chaîne.

(malgré)$ correspond à toute section de texte finissant par « malgré ». Ainsi la phrase « malgré le fait que j'aie des légumes dans mon jardin » ne déclenche pas l'expression rationnelle, mais « Le fait que j'aie des légumes dans mon jardin malgré tout ».

Tableau 5. Séquences d'échappement et chaînes littérales

Élément

Signification

Exemple

\

Pour correspondre à des caractères ayant une signification particulière dans une expression rationnelle (par exemple, « + »).

(1) .REG. C\\C\+\+ correspond à ‘C\C++’.

(2) .REG. \* correspond à *.

(3) .REG. \? correspond à ?.

\t

Indique une tabulation.

(stress)\t correspond à toute section de texte contenant l'élément « stress » suivi immédiatement d'une tabulation (ASCII 0x09).

\n

Indique un caractère de nouvelle ligne.

Remarque :

le caractère de nouvelle ligne peut être représenté différemment suivant les plates-formes. Sous Windows, un caractère de nouvelle ligne est représenté par une série de deux caractères, un retour chariot suivi d'un saut de ligne. Sous Unix et Linux, une nouvelle ligne correspond juste à un saut de ligne, et sous Macintosh à un retour chariot.

(stress)\n\n correspond à toute section de texte contenant l'élément « stress » suivi immédiatement de deux caractères de nouvelle ligne (ASCII 0x0A).

\r

Indique un caractère de retour chariot.

(stress)\r correspond à toute section de texte contenant l'élément « stress » suivi immédiatement d'un caractère de retour chariot (ASCII 0x0D).

\b

Indique un espacement arrière.

OR

Indique les limites

(stress)\b correspond à toute section de texte contenant l'élément « stress » suivi immédiatement d'un espacement arrière (ASCII 0x08).

Une limite de mot (\b) est définie comme un point entre deux caractères avec un \w d'un côté et un \W de l'autre côté (dans l'un ou l'autre ordre), comptant les caractères imaginaires du début jusqu'à la fin de la chaîne correspondant à \W. (Dans les classes de caractères, \b représente un espacement arrière plutôt qu'une limite de mot.)

Par exemple, l'expression rationnelle suivante peut correspondre à un numéro de sécurité sociale : .REG. \b\d{3}-\d{2}-\d{4}\b

\xhh

Indique un caractère ASCII avec un code hexadécimal donné (où hh représente une valeur hex à deux chiffres quelconque).

\x7E(\w){6} correspond à toute section de texte contenant un « mot » d'exactement six caractères alphanumériques précédé d'un ~ (tilde). Ainsi, les mots ‘~ab12cd’, ‘~Pa3499’ correspondent, mais ‘~oops’ ne correspond pas.

Générateur d'expressions rationnelles

Lorsque vous choisissez le mode de configuration des règles pour la prévention de la perte de données, tenez compte du fait que le générateur d'expressions rationnelles ne peut créer que des expressions simples, conformément aux règles et restrictions suivantes :

  • Seuls des caractères alphanumériques peuvent former des variables.

  • Tous les autres caractères, tels que [-], [/], etc., ne peuvent être que des constantes.

  • Les plages de variables ne peuvent être comprises qu'entre A et Z et 0 à 9 ; vous ne pouvez pas les limiter, par exemple, à A-D.

  • Les expressions rationnelles générées par cet outil respectent la casse.

  • Les expressions rationnelles générées par cet outil ne gèrent que les correspondances positives, pas les correspondances négatives (« si ne correspond pas à »).

  • Les expressions fondées sur votre échantillon ne peuvent correspondre qu'au nombre exact de caractères et d'espaces de ce dernier ; l'outil ne peut pas générer de modèles correspondant à « un ou plusieurs » pour un caractère ou une chaîne donnée.

Syntaxe d'expression complexe

Une expression de mot-clé est composée de jetons, qui sont l'unité la plus petite utilisée pour faire correspondre l'expression et le contenu. Un jeton peut être un opérateur, un symbole logique ou l'opérande, c'est-à-dire la valeur ou l'argument sur lequel agit l'opérateur.

Les opérateurs comprennent : .AND., .OR., .NOT., .NEAR., .OCCUR., .WILD., “.(.” et “ .).” L'opérande et l'opérateur doivent être séparés par un espace. Un opérande peut aussi contenir plusieurs jetons. Voir Mots-clés.

Fonctionnement des expressions rationnelles

L'exemple suivant décrit comment fonctionne le filtre de contenu de la Sécurité Sociale (l'un des filtres par défaut) :

[Format] .REG. \b\d{3}-\d{2}-\d{4}\b

L'expression ci-dessus utilise \b, un caractère d'espacement arrière, suivi de \d, n'importe quel chiffre, puis de {x}, indiquant le nombre de chiffres, et enfin, -, signalant un tiret. Cette expression correspond au numéro de sécurité sociale. Le tableau suivant décrit les chaînes de caractères qui correspondent à l'exemple de l'expression rationnelle :

Tableau 6. Numéros correspondant à l'expression rationnelle de la Sécurité Sociale

.REG. \b\d{3}-\d{2}-\d{4}\b

333-22-4444

Correspond

333224444

Ne correspond pas

333 22 4444

Ne correspond pas

3333-22-4444

Ne correspond pas

333-22-44444

Ne correspond pas

Si vous modifiez l'expression de la façon suivante

[Format] .REG. \b\d{3}\x20\d{2}\x20\d{4}\b

la nouvelle expression correspond à la séquence suivante :

333 22 4444