Télécharger le PDF

L’expression régulière est un groupe de caractères ou de symboles qui est utilisé pour trouver un motif spécifique à partir d’un certain texte ; vous pouvez les appeler des jokers sur les stéroïdes, si vous voulez. En tant que développeur, la maîtrise des expressions régulières peut être un outil puissant à avoir dans votre ceinture d’outils ; vous allez certainement devoir les utiliser dans vos programmes à un moment donné, la recherche et le remplacement en utilisant des expressions régulières dans les IDE est vraiment pratique parfois et je me retrouve à les utiliser dans la ligne de commande tous les jours.

Des applications et des langages de programmation différents pourraient avoir des implémentations différentes pour les expressions régulières, mais les concepts sous-jacents sont principalement les mêmes. Dans ce post, je vais expliquer tout ce que vous devez savoir sur les expressions régulières.

Une expression régulière est un motif qui est mis en correspondance avec une chaîne de sujets de gauche à droite. Le mot « expression régulière » est une bouche, vous trouverez généralement le terme abrégé comme « regex » ou « regexp ». L’expression régulière est utilisée pour remplacer un texte dans une chaîne, valider un formulaire, extraire une sous-chaîne d’une chaîne basée sur une correspondance de motif, et bien plus encore.

Imaginez que vous écrivez une application et que vous voulez définir les règles pour le moment où un utilisateur choisit son nom d’utilisateur. Nous voulons permettre au nom d’utilisateur de contenir des lettres, des chiffres, des traits de soulignement et des traits d’union. Nous voulons également limiter le nombre de caractères dans le nom d’utilisateur afin qu’il ne soit pas laid. Nous utilisons l’expression régulière suivante pour valider un nom d’utilisateur:

Expression régulière

L’expression régulière ci-dessus peut accepter les chaînes john_doe, jo-hn_doe et john12_as. Elle ne correspond pas à Jo car cette chaîne contient une lettre majuscule et aussi elle est trop courte.

Table des matières

  • Combinaisons de base
  • Caractères méta
  • Stop complet
  • Jeu de caractères
  • Jeu de caractères négationnistes
  • Répétitions
  • L’étoile
  • L’étoile. Etoile
  • Le Plus
  • Le Point d’interrogation
  • Traces
  • Groupe de caractères
  • Alternation
  • Caractère spécial d’échappement
  • Ancres
  • Caret
  • .

  • Dollar
  • Jeux de caractères abrégés
  • Regardez autour de vous
  • Regardez en avant positif
  • Regardez en avant négatif
  • Regardez en arrière positif
  • Balises
  • Sensible à la casse
  • .

  • Recherche globale
  • Multiligne
  • Mise en correspondance rapide vs paresseuse

Combinaisons de base

Une expression régulière est juste un motif de caractères que nous utilisons pour effectuer
une recherche dans un texte. Par exemple, l’expression régulière the signifie : la lettre
t, suivie de la lettre h, suivie de la lettre e.

the => The fat cat sat on the mat.

Tester l’expression régulière

L’expression régulière 123 correspond à la chaîne 123. L’expression régulière est mise en correspondance avec une chaîne d’entrée en comparant chaque caractère de l’expression régulière
à chaque caractère de la chaîne d’entrée, l’un après l’autre. Les expressions régulières
sont normalement sensibles à la casse, donc l’expression régulière Thene correspondrait
pas à la chaîne the.

The => The fat cat sat on the mat.

Tester l’expression régulière

Caractères méta

Les caractères méta sont les blocs de construction des expressions régulières. Les méta
caractères ne se suffisent pas à eux-mêmes mais sont plutôt interprétés d’une certaine
façon spéciale. Certains métacaractères ont une signification particulière et sont écrits entre crochets. Les métacaractères sont les suivants :

2.1 Point

Point . est l’exemple le plus simple de métacaractère. Le métacaractère .
correspond à n’importe quel caractère unique. Il ne correspondra pas aux caractères de retour ou de nouvelle ligne.
Par exemple, l’expression régulière .ar signifie : tout caractère, suivi de la lettre a, suivi de la lettre r.

.ar => The car parked in the garage.

Tester l’expression régulière

2.2 Jeu de caractères

Les jeux de caractères sont également appelés classe de caractères. Les crochets sont utilisés pour
spécifier les jeux de caractères. Utilisez un trait d’union à l’intérieur d’un jeu de caractères pour spécifier l’étendue des caractères. L’ordre de la plage de caractères à l’intérieur des crochets
n’a pas d’importance. Par exemple, l’expression régulière he signifie : une majuscule T ou une minuscule t, suivie de la lettre h, suivie de la lettre e.

he => The car parked in the garage.

Tester l’expression régulière

Un point à l’intérieur d’un jeu de caractères, cependant, signifie un point littéral. L’expression régulière
ar signifie : un caractère minuscule a, suivi de la lettre r,
suivi d’un caractère point ..

ar => A garage is a good place to park a car.

Tester l’expression régulière

2.2.1 Négation du jeu de caractères

En général, le symbole du caret représente le début de la chaîne de caractères, mais lorsqu’il est
typé après le crochet ouvrant, il nie le jeu de caractères. Pour
exemple, l’expression régulière ar signifie : tout caractère sauf c,
suivi du caractère a, suivi de la lettre r.

ar => The car parked in the garage.

Tester l’expression régulière

2.3 Répétitions

Les métacaractères suivants +, * ou ? sont utilisés pour spécifier combien de fois un sous-modèle peut se produire. Ces métacaractères agissent différemment dans différentes
situations.

2.3.1 L’étoile

Le symbole * correspond à zéro ou plusieurs répétitions du matcheur précédent. L’expression régulière a* signifie : zéro ou plusieurs répétitions du caractère minuscule précédent a. Mais si elle apparaît après un jeu de caractères ou une classe, elle trouve les répétitions de l’ensemble du jeu de caractères. Par exemple, l’expression régulière * signifie : tout nombre de lettres minuscules dans une rangée.

* => The car parked in the garage #21.

Tester l’expression régulière

Le symbole * peut être utilisé avec le métacaractère . pour correspondre à toute chaîne de
caractères .*. Le symbole * peut être utilisé avec le caractère d’espacement \s
pour correspondre à une chaîne de caractères d’espacement. Par exemple, l’expression
\s*cat\s* signifie : zéro ou plusieurs espaces, suivis du caractère minuscule c,
suivi du caractère minuscule a, suivi du caractère minuscule t, suivi de zéro ou plusieurs espaces.

\s*cat\s* => The fat cat sat on the concatenation.

Tester l’expression régulière

2.3.2 Le Plus

Le symbole + correspond à une ou plusieurs répétitions du caractère précédent. Par exemple, l’expression régulière c.+t signifie : lettre minuscule c, suivie d’au moins un caractère, suivi du caractère minuscule t. Il faut préciser que t est le dernier t de la phrase.

c.+t => The fat cat sat on the mat.

Tester l’expression régulière

2.3.3 Le point d’interrogation

Dans une expression régulière, le métacaractère ? rend le caractère précédent
optionnel. Ce symbole correspond à zéro ou une instance du caractère précédent. Par exemple, l’expression régulière ?he signifie : Facultatif la lettre majuscule T, suivie du caractère minuscule h, suivi du caractère minuscule e.

he => The car is parked in the garage.

Tester l’expression régulière

?he => The car is parked in the garage.

Tester l’expression régulière

2.4 Accolades

Dans une expression régulière, les accolades qui sont aussi appelées quantificateurs sont utilisées pour
spécifier le nombre de fois qu’un caractère ou un groupe de caractères peut être
répété. Par exemple, l’expression régulière {2,3} signifie : Faire correspondre au moins 2 chiffres mais pas plus de 3 ( caractères dans la plage de 0 à 9).

{2,3} => The number was 9.9997 but we rounded it off to 10.0.

Tester l’expression régulière

On peut laisser de côté le deuxième chiffre. Par exemple, l’expression régulière
{2,} signifie : Faire correspondre 2 chiffres ou plus. Si nous supprimons également la virgule, l’expression régulière
{3} signifie : Correspondre exactement à 3 chiffres.

{2,} => The number was 9.9997 but we rounded it off to 10.0.

Tester l’expression régulière

{3} => The number was 9.9997 but we rounded it off to 10.0.

Tester l’expression régulière

2.5 Groupe de caractères

Le groupe de caractères est un groupe de sous-modèles qui est écrit à l’intérieur des parenthèses (…). Comme nous avons discuté avant que dans l’expression régulière si nous mettons un quantificateur après un caractère alors il va répéter le caractère précédent. Mais si nous mettons un quantificateur après un groupe de caractères alors il répète l’ensemble du groupe de caractères. Par exemple, l’expression régulière (ab)* correspond à zéro ou plusieurs répétitions du caractère ab. Nous pouvons également utiliser l’alternance | méta caractère à l’intérieur du groupe de caractères. Par exemple, l’expression régulière (c|g|p)ar signifie : caractère minuscule c, g ou p, suivi du caractère a, suivi du caractère r.

(c|g|p)ar => The car is parked in the garage.

Tester l’expression régulière

2.6 Alternance

Dans une expression régulière, la barre verticale | est utilisée pour définir l’alternance. L’alternance est comme une condition entre plusieurs expressions. Maintenant, vous pouvez penser que le jeu de caractères et l’alternance fonctionnent de la même manière. Mais la grande différence entre le jeu de caractères et l’alternance est que le jeu de caractères fonctionne au niveau des caractères mais l’alternance fonctionne au niveau des expressions. Par exemple, l’expression régulière (T|t)he|car signifie : caractère majuscule T ou minuscule t, suivi du caractère minuscule h, suivi du caractère minuscule e ou du caractère minuscule c, suivi du caractère minuscule a, suivi du caractère minuscule r.

(T|t)he|car => The car is parked in the garage.

Tester l’expression régulière

2.7 Echapper un caractère spécial

La barre oblique inversée \ est utilisée dans une expression régulière pour échapper au caractère suivant. Cela
nous permet de spécifier un symbole comme caractère correspondant, y compris les caractères réservés
{ } / \ + * . $ ^ | ?. Pour utiliser un caractère spécial comme caractère correspondant, il faut le faire précéder de \N.

Par exemple, l’expression régulière . est utilisée pour correspondre à n’importe quel caractère sauf
la nouvelle ligne. Maintenant, pour faire correspondre . dans une chaîne d’entrée, l’expression régulière (f|c|m)at\.? signifie : lettre minuscule f, c ou m suivie du caractère minuscule
a, suivi de la lettre minuscule t, suivie du caractère facultatif ..

(f|c|m)at\.? => The fat cat sat on the mat.

Tester l’expression régulière

2.8 Ancres

Dans les expressions régulières, nous utilisons des ancres pour vérifier si le symbole correspondant est le
symbole de début ou le symbole de fin de la chaîne d’entrée. Les ancres sont de deux types : Le premier type est Caret ^ qui vérifie si le caractère correspondant est le début
caractère de l’entrée et le second type est Dollar $ qui vérifie si le caractère correspondant
est le dernier caractère de la chaîne d’entrée.

2.8.1 Caret

Le symbole Caret ^ est utilisé pour vérifier si le caractère correspondant est le premier caractère
de la chaîne d’entrée. Si nous appliquons l’expression régulière suivante ^a (si a est
le symbole de départ) à la chaîne d’entrée abc, elle correspond à a. Mais si nous appliquons l’expression régulière ^b sur la chaîne d’entrée ci-dessus, elle ne correspond à rien. Parce que dans la chaîne d’entrée abc b n’est pas le symbole de départ. Regardons une autre expression régulière ^(T|t)he qui signifie : le caractère majuscule T ou le caractère minuscule t est le symbole de départ de la chaîne d’entrée, suivi par
le caractère minuscule h, suivi par le caractère minuscule e.

(T|t)he => The car is parked in the garage.

Tester l’expression régulière

^(T|t)he => The car is parked in the garage.

Tester l’expression régulière

2.8.2 Dollar

Le symbole Dollar $ est utilisé pour vérifier si le caractère correspondant est le dernier caractère
de la chaîne d’entrée. Par exemple, l’expression régulière (at\.)$ signifie : un caractère minuscule a, suivi d’un caractère minuscule t, suivi d’un caractère . et l’appariement doit être la fin de la chaîne.

(at\.) => The fat cat. sat. on the mat.

Tester l’expression régulière

(at\.)$ => The fat cat. sat. on the mat.

Tester l’expression régulière

Jeux de caractères sténographiques

L’expression régulière fournit des sténotypes pour les jeux de caractères couramment utilisés, qui offrent des sténotypes pratiques pour les expressions régulières couramment utilisées. Les jeux de caractères sténographiques sont les suivants :

Lookaround

Lookbehind et lookahead (également appelé lookaround) sont des types spécifiques de
groupes non capturants (Utilisés pour correspondre au motif mais non inclus dans la liste de correspondance). Les lookaheads sont utilisés lorsque nous avons la condition que ce motif est précédé ou suivi par un autre certain motif. Par exemple, nous voulons obtenir tous les chiffres qui sont précédés du caractère $ à partir de la chaîne d’entrée suivante .44 and .88. Nous utiliserons l’expression régulière suivante (?<=$)* qui signifie : obtenir tous les nombres qui contiennent le caractère . et qui sont précédés du caractère $. Voici les lookarounds qui sont utilisés dans les expressions régulières:

4.1 Lookahead positif

Le lookahead positif affirme que la première partie de l’expression doit être
suivie par l’expression lookahead. La correspondance renvoyée contient uniquement le texte correspondant à la première partie de l’expression. Pour définir un lookahead positif
, on utilise des parenthèses. À l’intérieur de ces parenthèses, un point d’interrogation avec un signe égal est utilisé comme ceci : (?=…). L’expression Lookahead est écrite après le signe égal à l’intérieur des parenthèses. Par exemple, l’expression régulière
(T|t)he(?=\sfat) signifie : correspond éventuellement à la lettre minuscule t ou à la lettre majuscule T, suivie de la lettre h, suivie de la lettre e. Entre parenthèses, nous définissons le lookahead positif qui indique au moteur d’expression régulière de correspondre à The ou the qui sont suivis du mot fat.

(T|t)he(?=\sfat) => The fat cat sat on the mat.

Tester l’expression régulière

4.2 Lookahead négatif

Le lookahead négatif est utilisé lorsque nous devons obtenir toutes les correspondances de la chaîne d’entrée
qui ne sont pas suivies d’un motif. Le lookahead négatif est défini de la même manière que le lookahead positif, mais la seule différence est qu’au lieu du caractère = égal, nous utilisons le caractère de négation !, c’est-à-dire (?!…). Regardons l’expression régulière suivante (T|t)he(?!\sfat) qui signifie : obtenir tous les The ou the mots de la chaîne d’entrée qui ne sont pas suivis du mot fat précédé d’un caractère espace.

(T|t)he(?!\sfat) => The fat cat sat on the mat.

Tester l’expression régulière

4.3 Lookbehind positif

Le lookbehind positif est utilisé pour obtenir toutes les correspondances qui sont précédées d’un motif
spécifique. Le lookbehind positif est désigné par (?<=…). Par exemple, l’expression régulière (?<=(T|t)he\s)(fat|mat) signifie : obtenir tous les mots fat ou mat de la chaîne d’entrée qui sont après le mot The ou the.

(?<=(T|t)he\s)(fat|mat) => The fat cat sat on the mat.

Tester l’expression régulière

4.4 Lookbehind négatif

Le lookbehind négatif est utilisé pour obtenir toutes les correspondances qui ne sont pas précédées d’un motif
spécifique. Le lookbehind négatif est désigné par (?<!…). Par exemple, l’expression régulière (?<!(T|t)he\s)(cat) signifie : obtenir tous les catmots de la chaîne d’entrée qui ne sont pas après le mot The ou the.

(?<!(T|t)he\s)(cat) => The cat sat on cat.

Tester l’expression régulière

Flags

Les drapeaux sont également appelés modificateurs car ils modifient la sortie d’une expression régulière
. Ces drapeaux peuvent être utilisés dans n’importe quel ordre ou combinaison, et sont une
partie intégrante de l’expression régulière.

5.1 Insensible à la casse

Le modificateur i est utilisé pour effectuer une correspondance insensible à la casse. Par exemple, l’expression régulière /The/gi signifie : lettre majuscule T, suivie du caractère minuscule h, suivi du caractère e. Et à la fin de l’expression régulière, le drapeau i indique au moteur d’expression régulière d’ignorer la casse. Comme vous pouvez le voir, nous avons également fourni le drapeau g car nous voulons rechercher le motif dans toute la chaîne d’entrée.

The => The fat cat sat on the mat.

Tester l’expression régulière

/The/gi => The fat cat sat on the mat.

Tester l’expression régulière

5.2 Recherche globale

Le modificateur g est utilisé pour effectuer une correspondance globale (trouver toutes les correspondances plutôt que de s’arrêter après la première correspondance). Par exemple, l’expression régulière /.(at)/g signifie : tout caractère sauf nouvelle ligne, suivi du caractère minuscule a, suivi du caractère minuscule t. Parce que nous avons fourni le drapeau g à la fin de l’expression régulière maintenant il trouvera toutes les correspondances dans la chaîne d’entrée, pas seulement la première (ce qui est le comportement par défaut).

/.(at)/ => The fat cat sat on the mat.

Tester l’expression régulière

/.(at)/g => The fat cat sat on the mat.

Tester l’expression régulière

5.3 Multiline

Le modificateur m est utilisé pour effectuer une correspondance multi-ligne. Comme nous l’avons discuté précédemment
les ancres (^, $) sont utilisées pour vérifier si le motif est le début de l’entrée ou la fin de la chaîne d’entrée. Mais si nous voulons que les ancres fonctionnent sur chaque ligne, nous utilisons le drapeau
m. Par exemple, l’expression régulière /at(.)?$/gm signifie : minuscule
caractère a, suivi du caractère minuscule t, éventuellement tout sauf
nouvelle ligne. Et en raison du drapeau m maintenant le moteur d’expression régulière correspond au motif à la fin de chaque ligne dans une chaîne.

/.at(.)?$/ => The fat
cat sat
on the mat.

Tester l’expression régulière

"/.at(.)?$/gm" => The fat
cat sat
on the mat.

Tester l’expression régulière

Mise en correspondance gourmande vs paresseuse

Par défaut, regex fera une mise en correspondance gourmande , ce qui signifie qu’il correspondra aussi longtemps que
possible. Nous pouvons utiliser ? pour correspondre de manière paresseuse signifie aussi court que possible

/(.*at)/ => The fat cat sat on the mat.

Tester l’expression régulière

/(.*?at)/ => The fat cat sat on the mat.

Tester l’expression régulière

Et avec cela, ce post se termine. J’espère que ce post a été utile. Assurez-vous de pratiquer ce que vous avez appris en utilisant des services comme regexr.com ou regex101.com.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.