Vous êtes sur la page 1sur 5

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.


Structur
e 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 à mett
en correspondance (par exemple, [1-5] ou [A-M]). Vous pouvez également placer plusieurs plag
les unes à côté des autres dans la classe pour étendre davantage les possibilités de correspondanc

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.


Quantificateu
r 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
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 (comm


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 termi
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é en


une paire de \b uniquement s'il s'agit d'un mot distinct (par opposition à une sous-chaîne d
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
liste, vous pouvez utiliser la barre verticale comme séparateur ( |). Par
exemple, EMPLOY(EE|ER)_ID correspond à EMPLOYEE_ID et EMPLOYER_ID.

Exemples

^JOB.*(TITLE|PROFILE|POSITION)$  correspond aux chaînes commençant par les lettres JOB,


suivies par zéro ou plusieurs occurrences d'un caractère et se terminant
par 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.

Vous aimerez peut-être aussi