Les fonctions de recherche / remplacement de l'éditeur Adélia Studio vous permettent de rechercher des expressions régulières.
Les expressions régulières peuvent aussi être utilisées dans la définition des règles d'un plugin utilisateur du Gestionnaire de qualité.
Pour cela, Adélia Studio utilise une librairie compatible avec les expressions régulières PERL (librairie PCRE).
Une expression régulière est un masque, appliqué à une chaîne sujet, de gauche à droite. La plupart des caractères se représentent eux-mêmes.
La recherche par expression régulière dans l'éditeur Adélia Studio permet de sélectionner des parties de texte répondant à la structure définie par l'expression, et, dans une certaine mesure, d'effectuer des traitements sur ce texte pour produire une valeur de remplacement.
Adélia Studio utilise une librairie compatible avec la gestion des expressions régulières de PERL. La syntaxe des expressions utilisables découle de cette librairie.
Métacaractères
La puissance des expressions régulières provient de leur capacité à autoriser des alternatives et des quantificateurs de répétition dans le masque. Ils sont encodés dans le masque par des métacaractères, qui ne représentent pas ce qu'ils sont, mais sont interprétés d'une certaine manière.
Il existe deux sortes de métacaractères :
les métacaractères reconnus n'importe où dans un masque, hormis entre crochets,
les métacaractères reconnus entre crochets (à l'intérieur de la définition d'une classe de caractères).
A l'extérieur des crochets, les métacaractères sont les suivants :
Caractère |
Signification |
|
\ |
Barre oblique inverse |
Caractère d'échappement |
^ |
Accent circonflexe |
Début de chaîne |
$ |
Dollar |
Fin de chaîne |
. |
Point |
N'importe quel caractère |
[ |
Crochet ouvrant |
Début d'une définition de classe de caractères |
] |
Crochet fermant |
Fin d'une définition de classe de caractères |
| |
Barre verticale |
Définition d'une alternative (ou) |
( |
Parenthèse ouvrante |
Début de "sous-masque" |
) |
Parenthèse fermante |
Fin de "sous-masque" |
? |
Point d'interrogation |
Equivaut au quantificateur {0,1} (zéro ou un) |
* |
Etoile |
Equivaut au quantificateur {0,} (zéro ou plus) |
+ |
Signe plus |
Equivaut au quantificateur {1,} (au moins un) |
{ |
Accolade ouvrante |
Début de quantificateur |
} |
Accolade fermante |
Fin de quantificateur |
Les parties de masque entourées de crochets sont appelées "classes de caractères". Dans les classes de caractères, seuls les métacaractères suivants sont autorisés :
Caractère |
Signification |
|
\ |
Barre oblique inverse |
Caractère d'échappement |
^ |
Accent circonflexe |
Négation de la classe (il doit être le premier caractère) |
- |
Signe moins |
Permet d'exprimer des plages de caractères |
] |
Crochet fermant |
Fin de la définition de classe de caractères |
Utilisation des différents métacaractères
Barre oblique inverse \
Seules les utilisations les plus fréquentes du caractère "\" sont développées dans cette section.
S'il est suivi d'un caractère non alphanumérique, il sert de caractère d'échappement pour le caractère qui suit. Cela permet de spécifier un métacaractère sans lui attribuer de signification spéciale.
Par exemple, pour rechercher une chaîne contenant le caractère "*", il faut spécifier "\*" sinon "*" est interprété comme un quantificateur.
La barre oblique inverse permet également de préciser des types génériques de valeurs :
Expression |
Signification |
\d |
Tout caractère décimal |
\D |
Tout caractère qui n'est pas un caractère décimal |
\s |
Tout caractère blanc |
\S |
Tout caractère qui n'est pas un caractère blanc |
\w |
Tout caractère de "mot" (lettre, chiffre ou souligné) |
\W |
Tout caractère qui n'est pas un caractère de "mot" |
Ces séquences de caractères peuvent apparaître à l'intérieur ou à l'extérieur des classes de caractères. Elles remplacent à chaque fois un caractère du type correspondant.
Accent circonflexe ^ et Dollar $
En dehors d'une classe de caractères, le caractère "^" permet de mettre une contrainte sur l'expression recherchée, qui doit commencer au début de la ligne. Ce caractère doit être spécifié en premier dans l'expression régulière, ou dans ses alternatives au premier niveau.
A l'intérieur d'une classe de caractères, "^" exprime une négation de la classe (c'est-à-dire, tout caractère ne faisant pas partie de la classe).
Le caractère "$" permet de mettre une contrainte sur l'expression recherchée, qui doit se terminer à la fin de la ligne. Ce caractère doit être spécifié en dernier dans l'expression régulière, ou dans ses alternatives au premier niveau.
Point .
En dehors d'une classe de caractères, un point remplace n'importe quel caractère.
Le point n'a pas de comportement particulier dans une classe de caractères.
Crochets [ ]
Un crochet ouvrant "[" introduit une classe de caractères, et le crochet fermant "]" la conclut. Si le crochet fermant est nécessaire à l'intérieur d"une classe de caractères, il faut le faire précéder du caractère d'échappement "\".
Une classe de caractères remplace un seul caractère dans la chaîne sujet, à moins que le premier caractère de la classe soit le caractère "^", qui représente une négation : le caractère ne doit pas se trouver dans la classe. Si "^" est nécessaire dans la classe, il faut le faire précéder du caractère d'échappement "\".
Barre verticale |
La barre verticale "|" sert à séparer des alternatives – c'est un "ou" logique. Les alternatives sont évaluées de gauche à droite et la première alternative possible rend le résultat final.
Par exemple, "num_bin_2|num_bin_4" trouvera aussi bien les occurrences de "num_bin_2" que de "num_bin_4".
Sous-masques
Les sous-masques sont délimités par des parenthèses et peuvent être imbriqués.
Ajouter des sous-masques permet de :
Délimiter des alternatives.
Par exemple, le masque "num_bin_(2|4)" accepte les mots "num_bin_2" et "num_bin_4".Capturer des "sous-expressions".
Lorsqu'une chaîne est acceptée par le masque complet, les sous-masques sont transmis à l'appelant grâce à un vecteur de sous-masques. Les parenthèses ouvrantes sont comptées de gauche à droite en commençant à 1.
Dans certains cas, notamment lorsque vous utilisez des alternatives, vous pouvez ne pas vouloir capturer les sous-masques. Dans ce cas, il faut utiliser (?:sous-masque) au lieu de (sous-masque).
Répétitions
Les répétitions sont spécifiées avec des quantificateurs qui peuvent être placés à la suite d'un caractère simple, d'une classe de caractères ou d'un sous-masque.
Les quantificateurs précisent un nombre minimum et maximum de répétitions possibles, donnés par deux nombres entre accolades, et séparés par une virgule. Ces nombres doivent être plus petits que 65536, et le premier nombre doit être égal ou inférieur au second.
Si le second nombre est omis, mais que la virgule est présente, cela signifie qu"il n'y a pas de limite supérieure. Si le second nombre et la virgule sont omis, le quantificateur correspond au nombre exact de répétition attendues.
Les raccourcis suivants sont autorisés pour des quantificateurs particuliers :
Caractère |
Signification |
|
? |
Point d'interrogation |
Equivaut au quantificateur {0,1} (zéro ou un) |
* |
Etoile |
Equivaut au quantificateur {0,} (zéro ou plus) |
+ |
Signe plus |
Equivaut au quantificateur {1,} (au moins un) |
Par défaut, on recherche les expressions les plus longues possibles autorisées par les quantificateurs.
Utilisation des métacaractères dans la fonction de recherche et de remplacement
La fonction de remplacement vous permet de référencer les valeurs capturées des sous-expressions, ce qui permet d'appliquer un traitement complexe pour le remplacement.
Les sous-expressions capturées sont référencées par $<numéro> où numéro est le numéro de la sous-expression. L'expression de numéro zéro ($0) correspond à la chaîne trouvée.
Pour spécifier un "$" dans une expression de remplacement avec les expressions régulières, vous devez le doubler ("$$").
Par exemple, l'expression " '(\d\d\d\d)/(\d\d)/(\d\d)' " combinée avec le remplacement " '$3/$2/$1' " permet de convertir une date au format ISO (AAAA/MM/JJ) au format français (JJ/MM/AAAA).
Pour plus d'informations sur les expressions régulières, vous pouvez vous reporter à une documentation complète disponible sur le site suivant :
- Documentation officielle de PERL (en anglais) : http://perldoc.perl.org/perlre.html
↑ Haut de page Copyrights Ι ©Hardis Group 2025 - Toute représentation ou reproduction intégrale ou partielle faite sans le consentement écrit d'Hardis Group est illicite.