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 : |
[^abc] |
Correspond à n'importe quel caractère, sauf ceux qui sont mentionnés entre crochets. Exemple : |
[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 " Exemple : |
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 : |
X* |
Correspond à zéro ou à plus d'occurrences du caractère ou du groupe de caractères indiqué. Exemple : |
X+ |
Correspond à une ou plusieurs occurrences du caractère ou du groupe de caractères indiqué. Exemple : |
X{n} |
Correspond au caractère ou au groupe de caractères indiqué, Exemple : |
X{n,} |
Correspond au caractère ou au groupe de caractères indiqué, au moins Exemple : |
X{n,m} |
Correspond au caractère ou au groupe de caractères indiqué, au moins Exemple : |
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 : |
$ |
Correspond au caractère ou au groupe de caractères indiqué à la fin d'une chaîne (se termine par la recherche). Exemple : |
\b |
Marque une limite de mot. Correspond au caractère ou au groupe de caractères indiqué entre une paire de Exemple : |
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.