Expressions régulières

Vous pouvez utiliser des expressions régulières pour décrire un ensemble de chaînes en fonction des caractéristiques communes partagées par chaque chaîne de l'ensemble.

Une expression régulière est essentiellement une séquence de caractères qui définit un modèle de recherche, utilisé pour la mise en correspondance de modèles. Les expressions régulières varient en complexité, mais une fois que vous avez compris les bases de leur construction, vous pouvez déchiffrer ou créer n'importe quelle expression.

Littéraux de chaîne

La forme la plus simple de correspondance de modèle est la correspondance d'un littéral de chaîne. Par exemple, si l'expression régulière est EMP et que la chaîne en entrée est EMP, la correspondance réussit car les chaînes sont identiques. Cette expression régulière correspond également à n'importe quelle chaîne contenant EMP, par exemple EMPLOYEE, TEMP et TEMPERATURE.

Métacaractères

Vous pouvez également utiliser des caractères spéciaux qui affectent la façon dont un modèle est mis en correspondance. L'un des symboles les plus courants est le point (.), qui correspond à n'importe quel caractère. Par exemple, EMPLOYEE.ID correspond à EMPLOYEE_ID et à EMPLOYEE-ID, mais pas à EMPLOYEE_VERIFICATION_ID. Ici, le point est un métacaractère : un caractère avec une signification particulière interprétée par le programme de correspondance.

Les autres métacaractères sont les suivants : ^ $ ? + * \ - [ ] ( ) { }.

Pour que le métacaractère soit traité littéralement (en tant que caractère ordinaire), vous pouvez utiliser une barre oblique inverse (\) afin de l'échapper. Par exemple, l'expression régulière 9\+9 correspond à 9+9.

Classes de caractères

Une classe de caractères est un ensemble de caractères entre crochets. Elle indique les caractères qui correspondent à un seul caractère à partir d'une chaîne donnée en entrée.

Le tableau suivant décrit certaines structures d'expressions régulières courantes.

Composition Description
[abc]

Correspond à l'un des caractères mentionnés entre crochets.

Exemple : EMPLOYE[ER] correspond à EMPLOYEE et EMPLOYER.

[^abc]

Correspond à n'importe quel caractère, sauf ceux qui sont mentionnés entre crochets.

Exemple : [^BC]AT correspond à RAT et HAT, mais pas à BAT ni à CAT.

[A-Z0-9]

Correspond à n'importe quel caractère de la plage mentionnée entre crochets. Pour indiquer une plage, insérez simplement le métacaractère tiret "-" entre le premier et le dernier caractère à mettre en correspondance (par exemple, [1-5] ou [A-M]). Vous pouvez également placer plusieurs plages les unes à côté des autres dans la classe pour étendre davantage les possibilités de correspondance.

Exemple : [B-F]AT correspond à BAT, CAT, DAT, EAT et FAT, mais pas à AAT ni à GAT.

Oracle Data Safe prend également en charge les classes de caractères prédéfinies.

Groupes de capture

Vous pouvez utiliser des groupes de capture pour traiter plusieurs caractères comme une unité unique. Un groupe de capture est créé en plaçant les caractères à regrouper entre parenthèses. Par exemple, l'expression régulière (SSN) crée un groupe unique contenant les lettres S, S et N.

Quantificateurs

Vous pouvez utiliser des quantificateurs pour indiquer le nombre d'occurrences à rechercher.

Le tableau suivant décrit certains quantificateurs courants.

Quantificateur Description
X?

Correspond à zéro ou à une occurrence du caractère ou du groupe de caractères indiqué.

Exemple : SSN_NUMBERS? correspond aux chaînes SSN_NUMBER et SSN_NUMBERS.

X*

Correspond à zéro ou à plus d'occurrences du caractère ou du groupe de caractères indiqué.

Exemple : TERM.*DATE correspond aux chaînes TERMDATE, TERM_DATE et LAST_TERMINATION_DATE.

X+

Correspond à une ou plusieurs occurrences du caractère ou du groupe de caractères indiqué.

Exemple : TERM.+DATE correspond aux chaînes TERM_DATE et TERMINATION_DATE, mais pas à TERMDATE.

X{n}

Correspond au caractère ou au groupe de caractères indiqué, n fois exactement.

Exemple : 9{3} correspond à 999, mais pas à 99.

X{n,}

Correspond au caractère ou au groupe de caractères indiqué, au moins n fois.

Exemple : 9{3,} correspond à 999, 9999 et 99999, mais pas à 99.

X{n,m}

Correspond au caractère ou au groupe de caractères indiqué, au moins n fois mais pas plus de m fois.

Exemple : 9{3,4} correspond à 999 et à 9999, mais pas à 99.

Vous pouvez également utiliser des quantificateurs avec des classes de caractères et des groupes de capture.

SSN[0-9]+ représente un exemple d'expression régulière avec une classe de caractères qui correspond aux chaînes telles que SSN0, SSN1 et SSN12. Ici, [0-9] est une classe de caractères qui est autorisée une ou plusieurs fois. L'expression régulière ne correspond pas à SSN.

SSN_NUM(BER)? représente un exemple d'expression régulière avec un groupe de capture qui correspond à SSN_NUM et SSN_NUMBER. (BER) est un groupe de capture qui est autorisé zéro ou une fois.

Programmes de correspondance de limite

Vous pouvez utiliser des programmes de correspondance de limite pour améliorer la précision des correspondances de modèles en indiquant l'emplacement de correspondance dans la chaîne. Par exemple, vous souhaitez rechercher un mot en particulier, mais uniquement s'il apparaît au début ou à la fin d'une chaîne en entrée.

Le tableau suivant décrit les programmes de correspondance de limite courants.

Construction de limite Description
^

Correspond au caractère ou au groupe de caractères indiqué au début d'une chaîne (commence par la recherche).

Exemple : ^VISA correspond aux chaînes commençant par VISA.

$

Correspond au caractère ou au groupe de caractères indiqué à la fin d'une chaîne (se termine par la recherche).

Exemple : NUMBER$ correspond aux chaînes se terminant par NUMBER.

\b

Marque une limite de mot. Correspond au caractère ou au groupe de caractères indiqué entre une paire de \b uniquement s'il s'agit d'un mot distinct (par opposition à une sous-chaîne dans une chaîne plus longue).

Exemple : \bAGE\b correspond aux chaînes EMPLOYEE AGE et PATIENT AGE INFORMATION, mais pas aux chaînes AGEING et EMPLOYEEAGE.

Si aucun programme de correspondance de limite n'est indiqué, une recherche avec l'opérateur Contient est effectuée. Par exemple, ELECTORAL correspond aux chaînes contenant ELECTORAL, comme ELECTORAL_ID, ID_ELECTORAL et ELECTORALID.

Vous pouvez effectuer une recherche de correspondance exacte à l'aide des commandes ^ et $ utilisées ensemble. Par exemple, la recherche ^ADDRESS$ recherche la chaîne ADDRESS exacte. Elle correspond à la chaîne ADDRESS mais pas aux chaînes PRIMARY_ADDRESS et ADDRESS_HOME.

Opérateurs logiques

Si vous souhaitez rechercher n'importe quel caractère ou groupe de caractères dans une barre verticale, vous pouvez utiliser la barre verticale (\|). Par exemple, EMPLOY(EE\|ER)_ID correspond à EMPLOYEE_ID et EMPLOYER_ID.

Exemples

^JOB.*(TITLE\|PROFILE\|POSITION)$ correspond aux chaînes commençant par JOB, suivies par zéro ou plusieurs occurrences d'un caractère et se terminant par la lettre TITLE, PROFILE ou POSITION.

^[A-Z]{3}[0-9]{2}[A-Z0-9]$ correspond aux chaînes commençant par trois lettres, suivies de deux chiffres et se terminant par une lettre ou un chiffre.

BIRTH.?(COUNTRY\|PLACE)\|(COUNTRY\|PLACE).*BIRTH correspond aux chaînes BIRTH COUNTRY, PATIENT_BIRTH_PLACE, PLACE_OF_BIRTH et EMPLOYEE'S COUNTRY OF BIRTH.

Rubriques connexes