Avec expressions régulières

Les expressions régulières sont des caractères combinés selon un motif (syntaxe) spécifique que vous pouvez utiliser avec les options avancées de recherche et/ou de remplacement. Les expressions régulières implémentées utilisent la syntaxe des motifs des expressions régulières d’ECMAScript.

Conseil

La barre d'état indique si les expressions régulières utilisées sont invalides ou si la chaîne de caractères recherchée n’a pas été trouvée. Utilisez le Générateur d’expressions pour créer des motifs valides.

Activer l’icône Avec expressions régulières dans la boîte de dialogue Rechercher

Caractères pour motifs spéciaux

Les caractères pour motifs spéciaux sont des caractères (ou des séquences de caractères) qui ont une signification particulière lorsqu’ils apparaissent dans une expression régulière, soit pour représenter un caractère difficile à exprimer dans une chaîne de caractères, soit pour représenter une catégorie de caractères. Chacun de ces caractères pour motifs spéciaux est mis en correspondance avec un seul caractère de la séquence cible (sauf si un quantificateur indique autrement).

Syntaxe

Description

Exemple

\w

Un caractère alphanumérique ou un trait de soulignement

test\wnew trouve test2new ou test_new

\W

Un caractère autre qu’un caractère alphanumérique ou un trait de soulignement

test\Wnew trouve test.new ou test-new

\d

Un caractère numérique

test\d\d trouve test21

\D

Un caractère autre qu’un caractère numérique

test\D\D trouve test_a

\s

Un caractère d’espacement ou un caractère de tabulation ou un caractère de fin de ligne (CR)(LF)

test\s1 trouve test 1

\S

Un caractère autre qu’un caractère d’espacement, un caractère de tabulation et un caractère de fin de ligne (CR)(LF)

test\S1 trouve test_1

\t

Tabulateur

a\tb trouve a     b

\r\n

Caractères de fin de ligne

Dans l’éditeur ST, les lignes se terminent par "\r\n" (retour chariot suivi d’une nouvelle ligne). Ces caractères ne sont pas visibles mais présents dans l’éditeur ST et il est possible de rechercher ces caractères.

Voir options : Extras > Options > Options de programme > Éditeurs > Éditeur ST -> Afficher les symboles de fin de ligne

test\r\n trouve test(CR)(LF)

.

Un seul caractère y compris des caractères d’espacement, de tabulation et de fin de ligne (CR)(LF)

te.t1 trouve text1 ou test1

\

Les caractères spéciaux suivants qui sont utilisés dans les expressions régulières doivent être échappés avec la barre oblique inverse \ pour être recherchés en tant que texte : ^ $ \ . * + ? ( ) [ ] { } |

Les séquences de caractères spéciaux répertoriées plus haut ne peuvent pas être échappées.

test\( trouve test(

[classe]

Le caractère recherché fait partie de la classe de caractères indiquée (voir classes de caractères ci-dessous)

[abc] trouve a, b ou c

[^classe]

Le caractère recherché ne fait pas partie de la classe de caractères indiquée (voir classes de caractères ci-dessous)

[^xyz] trouve un caractère autre que x, y ou z

Thèmes apparentés

Quantificateurs

Les quantificateurs suivent un caractère ou un caractère pour motif spécial. Ils peuvent modifier le nombre d’occurrences d’un caractère recherché :

Quantificateur

Nombre d’occurrences

Exemple

+

1 ou plus

pla+ce trouve place ou plaace

*

0 ou plus

pla*ce trouve plce ou place ou plaace

?

0 ou 1

pla?ce trouve plce ou place

{int}

Exactement le nombre défini par int

tyco{3}n trouve tycooon

{int,}

Le nombre défini par int ou plus

tyco{2,}n trouve tycoooon

{min,max}

Le nombre entre min (minimum) et max (maximum)

tyco{1,2}n trouve tycon ou tycoon

Par défaut, tous ces quantificateurs sont gourmands (c.-à-d. qu’ils prennent autant de caractères qui remplissent la condition que possible). Ce comportement peut être remplacé pour être non gourmand (c.-à-d. qu’ils prennent le moins de caractères possible répondant à la condition) en ajoutant un point d’interrogation (?) après le quantificateur.

Quantificateur

Nombre d’occurrences

Exemple

+?

1 ou plusieurs caractères, recherche non gourmande

Motif de recherche :'.+?'

Texte exemple : sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Résultat de la recherche : 'abc' et 'ABC'

Le moins de caractères possible trouvés entre le premier guillemet simple et le guillemet simple suivant.

+

1 ou plusieurs caractères, recherche gourmande

Motif de recherche :'.+'

Texte exemple : sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Résultat de la recherche : 'abc'; sVar2 := 'ABC'; sVar3 := ''

Autant de caractères possible trouvés entre le premier guillemet simple et le dernier guillemet simple.

*?

0 ou plusieurs caractères, recherche non gourmande

Motif de recherche :'.*?'

Texte exemple : sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Résultat de la recherche : 'abc' et 'ABC' et ''

*

0 ou plusieurs caractères, recherche gourmande

Motif de recherche :'.*'

Texte exemple : sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := '';

Résultat de la recherche : 'abc'; sVar2 := 'ABC'; sVar3 := ''

Groupes

Les groupes permettent d’appliquer des quantificateurs à une suite de caractères (au lieu d’un seul caractère).

Groupe de caractères

Description

Exemple

(sous-expression)

Capture les caractères représentant la sous-expression dans la séquence cible et les enregistre en tant que sous-motif capturé. Chaque sous-motif capturé est numéroté suivant l’ordre d’apparition de la première parenthèse ouverte (le premier sous-motif capturé a le numéro de référence arrière 1, le second le numéro de référence arrière 2, et ainsi de suite). Ce numéro de référence arrière peut être réutilisé dans la zone de recherche ou de remplacement.

i(\d)Var\1 trouve i1Var1, i2Var2 ou i6Var6 mais pas i1Var2

(\d) est la sous-expression du premier chiffre trouvé qui crée la première référence arrière (N=1). Cette référence arrière est utilisée avec \1 pour identifier le même contenu que celui trouvé dans la référence arrière.

(?:sous-expression)

Définit un groupe sans capture.

i(?:\d)Var(\d)Value\1 trouve i1Var2Value2 ou i1Var3Value3

Dans ce cas, \1 correspond à la première référence arrière (\d).

\number

Définit une référence arrière qui permet à une sous-expression précédemment trouvée d’être identifiée ultérieurement dans la même expression régulière.

Exemple 1 :

Motif de recherche : [a-c](\d)(?:in|out)put_\1 trouve a1input_1 ou b2output_2

Explication du motif de recherche :

[a-c] trouve a, b ou c

(\d) suivi par un chiffre et ce chiffre est utilisé en tant que référence arrière

(?:in|out) suivi par in ou out, cette expression n’est pas utilisée en tant que référence arrière

put_ suivi par put_

\1 suivi par la première référence arrière

Les références arrière peuvent aussi être utilisées dans la chaîne de caractères de remplacement.

Exemple 2 :

Motif de recherche : iCount(\d) trouve iCount suivi par un chiffre et ce chiffre est utilisé en tant que référence arrière

Motif de remplacement : iValue\1 remplace la chaîne de caractères recherchée iCount par iValue suivie par la première référence arrière

Résultat avec référence arrière est par ex. 3: iCount3 est remplacé par iValue3

Assertions

Les assertions indiquent une position dans la chaîne de caractères à laquelle l’élément recherché doit apparaître. Lorsque vous utilisez une assertion dans votre expression de recherche, le moteur d’expression régulière n’avance pas dans la séquence cible ou ne consomme pas de caractère, il recherche une correspondance à la position indiquée uniquement.

Groupe de caractères

Description

Exemple

\b

Limite de mots

\bis trouve island et is mais pas This

is\b trouve This et is mais pas island

\bis\b trouve is mais pas island

\B

Pas de limite de mots

\Bis trouve This mais pas island

is\B trouve island mais pas This

\Bis\B trouve Wish mais pas is ou island

^

Début de ligne

^iVar trouve iVar uniquement lorsque la chaîne de caractères recherchée commence sur une nouvelle ligne. Utilisez ^\s*iVar pour trouver     iVar avec des caractères d’espacement en début de ligne.

Conseil

Si vous appuyez sur la touche caret <^> puis sur une voyelle, par ex. a, e, i, o, le caret sera interprété comme un accent circonflexe, par ex. â, ê, î, ô, û. Pour l’éviter appuyez sur <^> puis <Espace>.

$

Fin de ligne

iVar$ trouve iVar uniquement lorsque la chaîne de caractères recherchée est en fin de ligne.

(?=sous-expression)

Assertion avant positive

Les caractères qui suivent l’assertion doivent correspondre à la sous-expression mais sans consommation de caractère.

Var(?=\d) trouve tous les Var suivis d’un chiffre

(?!sous-expression)

Assertion avant négative

Les caractères qui suivent l’assertion ne doivent pas correspondre à la sous-expression, sans consommation de caractère.

Var(?!\d) trouve tous les Var qui ne sont pas suivis d’un chiffre

Alternatives

Un motif peut inclure différentes alternatives :

Caractère

Description

Exemple

|

Séparateur séparant deux motifs ou sous-expressions alternatifs.

(i|o)Var trouve iVar ou oVar

Pour utiliser plusieurs motifs alternatifs dans une expression régulière, séparez-les avec l’opérateur de séparation (|) : L’expression régulière renvoie un résultat si l’une des alternatives trouve une occurrence et dès qu’elle en trouve une.

L’opérateur de séparation peut également être utilisé dans les sous-expressions (dans des groupes ou assertions) pour séparer différentes alternatives.

Classes de caractères

Une classe de caractères définit un ensemble de caractères entre crochets [ ].

L’objet de l’expression régulière tente de faire correspondre l’ensemble de la classe de caractères avec un caractère de la séquence cible (sauf si un quantificateur indique autrement).

La classe de caractères peut contenir les combinaisons suivantes :

Type

Description

Exemple

Caractères individuels

Tout caractère spécifié est considéré comme faisant partie de la classe (sauf caractères spéciaux - (tiret), [ (crochet ouvrant), et ] (crochet fermant).

Tous les caractères pour motifs spéciaux tels que \t, \d, etc. peuvent également être utilisés dans une classe de caractères.

[abc] trouve a, b ou c

[^xyz] trouve un caractère autre que x, y ou z

Intervalle

Placez un tiret (-) entre deux caractères valides pour spécifier un intervalle.

[a-z] trouve un caractère en minuscule dans l’intervalle de a à z.

[^D-F] trouve un caractère autre que les lettres capitales D, E ou F.

[1-36-9] trouve un chiffre entre 1 et 3 ou entre 6 et 9.

[abc1-5] trouve a, b ou c ou un chiffre entre 1 et 5.

Caractères échappés

Les caractères -]\^ ont un sens spécial dans les classes de caractères. Pour qu’ils soient traités comme des caractères normaux, utilisez la barre oblique inverse (\) avant les caractères pour supprimer leur sens spécial.

[a\-z]Var trouve aVar, -Var ou zVar

[ab\t\]] trouve a, b, tabulateur ou ]

Modifié le : 2022-08-16Commentaires sur cette pageAssistance téléphonique