REGEXP, qu'est-ce que c'est? Comment ça marche?

Vous êtes programmeur et souhaitez enfin comprendre ce qu’est le fameux Regexp? Vous cherchez à créer une fonction de recherche? Ou devez vous tout simplement retrouver ou remplacer certains termes et codes dans votre fichier texte ou excel, et c’est tout simplement pénible de tout chercher manuellement?

Le Regex (ou Regexp), abréviation de Regular Expression, est un système de code qui sert à créer un schéma de recherche de texte. Ce schéma peut être utilisé pour reconnaître des variantes orthographiques, trouver des codes sous le même format, et bien d’autres.

Le Regex est utilisé dans plusieurs langages informatiques comme Perl, Python ou Javascript, des simples éditeurs de texte et Excel aux puissants moteurs de recherche.

Voyez ci-dessous un exemple d’expression régulière:

regex( |p)

En utilisant cette expression, vous retrouverez toutes les instances ou il y a écrit regex et regexp dans votre texte.

Comment ça marche exactement?

Une syntaxe précise est définie pour les expressions régulières (il se peut qu’elle varie un peu selon le langage informatique).

Dans cette syntaxe, nous avons des sélectionneurs de caractères et des opérateurs qui nous permettent de créer un schéma de recherche.

regex-exemple-expression-reguliere
Une expression régulière qui retrouve les éléments sous le format chiffre-tiret-texte

Les caractères

Un caractère ou une suite exacte de caractères, ou un signe spécial désignant une classe de caractères. En voici quelques uns:

  • a - la lettre a
  • ab - la suite de lettres ab exactement
  • \d - un chiffre de 0 à 9
  • \s - un espace vide
  • . - n’importe quel caractère à part les retours à la ligne (wildcard)

Exemple:

t.p - les endroits dans le texte où t, un caractère quelconque, et p se suivent.

Note: les ponctuations sont utilisées comme opérateurs, et pour les rechercher dans du texte, il faut donc qu’elles soient précédées d’un \backslash. Pour rechercher +, il faut écrire \+

Les Parenthèses

Les (parenthèses) fonctionnent comme en maths, pour grouper des caractères et des opérateurs.

| (barre verticale) - équivalent de l’opérateur OR

(a|b) - a soit b

Exemple:

avanc(er|é) - soit avancer, soit avancé

Les crochets

Les [crochets] sont utilisés pour grouper un ensemble de caractères possibles. Les caractères crochetés seront identifiés individuellement plutôt que dans une chaîne de caractères exacte.

Des groupements spécifiques à mettre entre crochets sont également définis.

En voici quelques uns:

  • [abtmp] - une des lettres a, b, t, m ou p
  • [a-z] - une lettre de a à z, en minuscule uniquement
  • [0-9] - un chiffre de 0 à 9
  • [^0-9] - un caractère qui n’est pas un chiffre 0 à 9
  • [a-z0-9] - une lettre de a à z en minuscule ou un chiffre de 0 à 9

Les quantificateurs

Les quantificateurs sont placés après un caractère rechercher le nombre de fois où il se répète. En voici quelques uns:

  • * - répété 0 fois ou plus
  • + - répété 1 fois ou plus
  • ? - répété 0 ou 1 fois
  • {3} - répété 3 fois exactement
  • {2,5} - répété de 2 à 5 fois

Exemple:

b.+ - retrouve la lettre b, suivie de n’importe quel nombre de caractères

o{20} - retrouve les endroits dans le texte ou la lettre o est répétée 20 fois exactement

Les ancres

Les ancres déterminent la position des caractères recherchés dans le mot, la phrase, ou la ligne. En voici quelques uns:

  • ^ - au début du mot
  • $ - à la fin du mot

Exemple:

^a - la lettre a au début d’un mot

^a.+ - les mots qui commencent par a

e$ - la lettre e à la fin d’un mot

.+e$ - les mots qui finissent par la lettre e

Des exemples concrets

Identifier les adresses email:

Supposons que vous souhaitez rechercher des adresses email dans votre texte:

Voici une adresse email en tant qu’exemple: [email protected]

On peut la diviser comme ceci: (exemple1)+(@)+(gmail)+(.)+(com)

Cette expression régulière permet de retrouver les adresses suivant ce format:

^.+@.+\..+$

  • ^ et $ - isoler la chaîne de caractères.
  • .+ - une suite de caractères quelconques (exemple1, le nom d’utilisateur)
  • @ - l’arobase
  • .+ - une suite de caractères quelconques (gmail, yahoo, etc…)
  • \. - le point
  • .+ - une suite de caractères quelconques (com, fr, etc…)

Note: cette solution accepte tous les caractères, même ceux non autorisés dans une adresse mail. Une solution plus utilisée serait ^[a-zA-Z0-9_.±]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$ pour n’avoir que les caractères autorisés.

Trouver toutes les instances d’un type de code défini

Supposons que vous ayez une liste d’articles ayant leur codes respectifs.

Voici quelques exemples de ces codes: ATV-0256, DRV-34, KRM-262.

Le code suit donc le format suivant: (code en 3 lettres)+(tiret)+(numéro)

Cette expression régulière permet de retrouver les codes suivant ce format:

[A-Z]{3}\-\d+

  • [A-Z]{3} - trois lettres majuscules
  • \- - le tiret
  • \d+ - 1 ou plus de chiffres

Dans quels programmes et quelles situations peut-on s’en servir?

Les fonctionnalités de Regex sont disponibles dans plusieurs langages informatiques; il y a Perl, Python et Javascript comme bons exemples. Ils peuvent être utilisés dans des moteurs de recherche ou des fonctions ou du texte spécifique doit être trouvé et utilisé.

Le Regex peut aussi être utilisé par certains éditeurs de texte, ainsi que Excel et les programmes similaires. Pour ma part, je m’en suis beaucoup servi pour sélectionner et isoler des données sur Google Sheets; c’est beaucoup plus pratique que de relever ou modifier le contenu des cellules unes par unes.

Cet article ne couvre que les bases, mais il y a beaucoup d’autres fonctions et opérateurs. Certains programmes ou langages informatiques ont des variations dans leur syntaxe ou dans leur fonctionnalités.

Il existe des listes de syntaxe et fonctionnalités spécifiques pour chaques programmes et langages informatiques, mais les bases sont couvertes sur la page wikipédia.
Ce testeur de Regex en ligne pourrait aussi vous être utile.

1 « J'aime »