Téléchargement des produits


Version anglaise


 

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.


Exemple 1

L'expression "^num_\w+*" permet de détecter toutes les occurrences d'un mot commençant par "num_" placé en tout début de ligne (dans Adélia Studio, cela permet de détecter toutes les déclarations de variables numériques).


Exemple 2

L'expression "^num_bin_2|^num_bin_4" permet de détecter toutes les déclarations de variables numériques binaires.


Exemple 3

L'expression "^\s*\*\s.*$" permet de sélectionner entièrement toutes les lignes de commentaires (début de ligne + espaces optionnels + caractère '*' + espace + n'importe quel nombre de tout caractère + fin de ligne).


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 "\".


Exemple 1

L'expression "[A-Z]" représente un caractère non accentué majuscule (ou minuscule/majuscule si l'option "Respecter la casse" n"est pas cochée).


Exemple 2

L'expression "[^aeiouAEIOU]" permet de sélectionner tout caractère qui n'est pas une voyelle.


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 :

  1. Délimiter des alternatives.
    Par exemple, le masque "num_bin_(2|4)" accepte les mots "num_bin_2" et "num_bin_4".

  2. 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.

Si la chaîne "le roi soleil" est utilisée avec le masque "Le ((roi|prince) (soleil|charmant))", les sous-masques capturés seront :

"roi soleil", "roi", et "soleil", numérotés respectivement 1, 2, et 3.


Cette capture permet de référencer les expressions dans la chaîne de remplacement.

Dans cet exemple, si vous remplaciez la valeur trouvée par "le $3 du $2", vous obtiendriez en remplacement "le soleil du roi".


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.


Exemple 1

L'expression "[aeiou]{3,}" accepte n'importe quelle succession d'au moins 3 voyelles minuscules.


Exemple 2

L'expression "\d{8}" n'accepte que 8 chiffres exactement.


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).


  1. Recherche de lignes complètes contenant uniquement deux mots distincts

    L'expression régulière "^\s*(\w+)\s+(\w+)\s*$" permet de trouver toutes les lignes contenant exactement deux "mots" séparés par des espaces (en ignorant les espaces en début et en fin de ligne).

    Explication :

    début de ligne "^", suivi d'un nombre indéfini d'espaces "\s*", suivi d'un ou plusieurs caractères de mot "(\w+)" que l'on mémorise (expression 1), suivi d'un ou plusieurs espaces (\s+), suivi d'un ou plusieurs caractères de mot "(\w+)" que l'on mémorise (expression 2), suivi d'un nombre indéfini d'espaces "\s*" et d'une fin de ligne "$".

    Couplée avec l'expression de remplacement "$2 $1", vous pouvez inverser les deux mots sur toutes les lignes.
     

  2. Recherche de constantes numériques

    L'expression "[+-]?\d+(?:\.\d+)?" permet de trouver toutes les constantes numériques dans un texte.

    Explication : signe optionnel "[+-]?" suivi d'un ou plusieurs chiffres, éventuellement suivi "(?:...)?" d'un point "\." et d'un ou plusieurs chiffres (décimales).

    Ici, les décimales sont exprimées comme une sous-expression que l'on ne mémorise pas.
     



Pour plus d'informations sur les expressions régulières, vous pouvez vous reporter à une documentation complète disponible sur les sites suivants :




↑ Haut de page

  • Aucune étiquette