Comprendre les Expressions Régulières (REGEX)

Comprendre les Expressions Régulières (REGEX)
Dernière mise à jour le 02/06/2024
Temps de lecture : 4 minutes

Les expressions régulières, ou regex, sont des séquences de caractères qui forment un motif de recherche. C'est ce que l'on appelle également un pattern (schéma en anglais). Les expressions régulières sont très utiles pour détecter des pattern quelques part dans une chaîne de caractères.

Exemple avec les numéros de téléphone

Dans l'exemple suivant, nous avons 4 numéros de téléphone au format américain.

  • Mais certains ont des parenthèses pour le premier bloc de 3 nombres mais pas tous.
  • Après vous pouvez avoir un tiret, un point ou un espace comme séparateur
  • Certains numéros sont en début de ligne et d'autres à la fin
  • ... en clair, aucun n'est pareil et il n'est pas simple de tous les identifier 🤯😤

C'est dans ce domaine, qui semble complexe, que l'utilisation d'expressions régulières va être utile.

Comme vous pouvez le voir dans l'image suivante, nous avons été capable d'extraire tous les numéros de téléphones. Pourtant, ils sont tous différents et ne sont pas au même endroit dans la chaîne de caractères.

C'est là où l'utisation de pattern commun à toutes les cellules va nous être très utile.

Exemple dexpressions regulieres avec des numeros de telephone US

Les caractères spéciaux et leur signification

Dans le monde de Windows, vous connaissez certainement les métacaractères étoile ( * ) et point-d'interrogation ( ? ). Ils peuvent être utilisés avec les fonctions NB.SI.ENS ou SOMME.SI.ENS. Avec les REGEX, c'est la même chose mais il y a plus de possibilités.

  • . (point) : Correspond à n'importe quel caractère, sauf une nouvelle ligne.
  • + (plus) : Correspond à l'expression précédente trouvée une ou plusieurs fois.
  • ? (point d'interrogation) : Correspond à l'expression précédente trouvée trouvé 0 ou 1 fois (utile pour les numéros de téléphone US)
  • * (étoile) : Correspond à l'expression précédente 0 ou plusieurs fois.
  • $ (dollar) : Correspond à la fin d'une ligne.
  • ^ (accent circonflexe) : Correspond au début d'une ligne ou inverse le résultat d'une séquence spéciale (voir après)

L'utilité du symbole \

Le symbole \ (antislash) sert à rechercher un caractère spécial.

  • Par exemple, pour rechercher un point (.) dans une chaîne texte, on écrira \. (utilisé dans l'extraction d'emails)
  • Pour rechercher une parenthèse \(
  • Un plus, \+
  • Et ainsi de suite pour tous les caractères spéciaux

Les séquences spéciales \d \D \w \W \s \S

  • \d : Correspond à n'importe quel chiffre (équivalent à [0-9]).
  • \D : Correspond à n'importe quel caractère qui n'est pas un chiffre (donc lettres et ponctuation)
  • \w : Correspond à n'importe quel caractère alphanumérique (équivalent à [a-z][A-Z][0-9] et le caractère underscore ( _ )).
  • \W : Correspond à n'importe quel caractère qui n'est pas alphanumérique.
  • \s : Correspond à n'importe quel espace blanc (espaces, tabulations, nouvelles lignes).
  • \S : Correspond à n'importe quel caractère qui n'est pas un espace blanc.

Les crochets [0-9][a-z][A-Z]

Les crochets servent à créer une liste de recherche.

  • [0-9] : Correspond à n'importe quel chiffre.
  • [1-9] : Tous les chiffres sauf le 0
  • [a-z] : Correspond à n'importe quelle lettre minuscule.
  • [A-Z] : Correspond à n'importe quelle lettre majuscule.

Les accolades { } {2,} {2,5}

Les accolades servent à spécifier le nombre d'occurrences d'un pattern :

  • {n} : Correspond exactement à n occurrences. Par exemple @{2} va chercher toutes les chaînes où le symbole @ a été trouvé 2 fois de suite.
  • {n,} : Correspond à au moins n occurrences. En fait, le symbole + est équivalent à {1,} (un ou plus éléments trouvés). C'est exactement la même astuce qui permet de faire des remplacements spéciaux dans Word depuis plus de 30 ans.
  • {n,m} : Correspond à au moins n occurrences mais pas plus de m. {2,5} (au moins 2 mais pas plus de 5)

Les parenthèses ( ) pour les groupes

Les parenthèses sont utilisées pour grouper des parties d'une expression régulière. Cela permet de capturer des sous-expressions pour une utilisation ultérieure ou d'appliquer des quantificateurs à l'ensemble du groupe.

  • (\d{2}\s) => groupe de 2 chiffres suivi d'un espace (pour la recherche de numéros de téléphone français)
  • (\d{2}\s){3} => (\d{2}\s) => groupe de 2 chiffres suivi d'un espace qui se répète 3 fois

Précède ou Suit

Les assertions d'antériorité sont des types de lookbehind assertions :

  • (?<=) : Assertion d'antériorité positive. Correspond à un motif qui est précédé par une certaine séquence.
  • (? : Assertion d'antériorité négative. Correspond à un motif qui n'est pas précédé par une certaine séquence.

Les assertions de suivi sont des types de lookahead assertions :

  • (?!) : Assertion de suivi négative. Correspond à un motif qui n'est pas suivi par une certaine séquence.
  • (?=) : Assertion de suivi positive. Correspond à un motif qui est suivi par une certaine séquence.

Raccourci [[:punct]]

Le raccourci [[:punct:]] correspond à n'importe quel signe de ponctuation. Cela inclut des caractères comme le point, la virgule, le point d'interrogation, etc.

Les expressions régulières sont des outils puissants pour manipuler et rechercher des textes. En comprenant ces symboles et leurs usages, vous pouvez effectuer des recherches et des modifications complexes de manière efficace.

Articles liés

  • Pour tester vos pattern, vous pouvez utiliser le site regex101.com

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

MVP_logo_2017

Comprendre les Expressions Régulières (REGEX)

Reading time: 4 minutes
Dernière mise à jour le 02/06/2024

Les expressions régulières, ou regex, sont des séquences de caractères qui forment un motif de recherche. C'est ce que l'on appelle également un pattern (schéma en anglais). Les expressions régulières sont très utiles pour détecter des pattern quelques part dans une chaîne de caractères.

Exemple avec les numéros de téléphone

Dans l'exemple suivant, nous avons 4 numéros de téléphone au format américain.

  • Mais certains ont des parenthèses pour le premier bloc de 3 nombres mais pas tous.
  • Après vous pouvez avoir un tiret, un point ou un espace comme séparateur
  • Certains numéros sont en début de ligne et d'autres à la fin
  • ... en clair, aucun n'est pareil et il n'est pas simple de tous les identifier 🤯😤

C'est dans ce domaine, qui semble complexe, que l'utilisation d'expressions régulières va être utile.

Comme vous pouvez le voir dans l'image suivante, nous avons été capable d'extraire tous les numéros de téléphones. Pourtant, ils sont tous différents et ne sont pas au même endroit dans la chaîne de caractères.

C'est là où l'utisation de pattern commun à toutes les cellules va nous être très utile.

Exemple dexpressions regulieres avec des numeros de telephone US

Les caractères spéciaux et leur signification

Dans le monde de Windows, vous connaissez certainement les métacaractères étoile ( * ) et point-d'interrogation ( ? ). Ils peuvent être utilisés avec les fonctions NB.SI.ENS ou SOMME.SI.ENS. Avec les REGEX, c'est la même chose mais il y a plus de possibilités.

  • . (point) : Correspond à n'importe quel caractère, sauf une nouvelle ligne.
  • + (plus) : Correspond à l'expression précédente trouvée une ou plusieurs fois.
  • ? (point d'interrogation) : Correspond à l'expression précédente trouvée trouvé 0 ou 1 fois (utile pour les numéros de téléphone US)
  • * (étoile) : Correspond à l'expression précédente 0 ou plusieurs fois.
  • $ (dollar) : Correspond à la fin d'une ligne.
  • ^ (accent circonflexe) : Correspond au début d'une ligne ou inverse le résultat d'une séquence spéciale (voir après)

L'utilité du symbole \

Le symbole \ (antislash) sert à rechercher un caractère spécial.

  • Par exemple, pour rechercher un point (.) dans une chaîne texte, on écrira \. (utilisé dans l'extraction d'emails)
  • Pour rechercher une parenthèse \(
  • Un plus, \+
  • Et ainsi de suite pour tous les caractères spéciaux

Les séquences spéciales \d \D \w \W \s \S

  • \d : Correspond à n'importe quel chiffre (équivalent à [0-9]).
  • \D : Correspond à n'importe quel caractère qui n'est pas un chiffre (donc lettres et ponctuation)
  • \w : Correspond à n'importe quel caractère alphanumérique (équivalent à [a-z][A-Z][0-9] et le caractère underscore ( _ )).
  • \W : Correspond à n'importe quel caractère qui n'est pas alphanumérique.
  • \s : Correspond à n'importe quel espace blanc (espaces, tabulations, nouvelles lignes).
  • \S : Correspond à n'importe quel caractère qui n'est pas un espace blanc.

Les crochets [0-9][a-z][A-Z]

Les crochets servent à créer une liste de recherche.

  • [0-9] : Correspond à n'importe quel chiffre.
  • [1-9] : Tous les chiffres sauf le 0
  • [a-z] : Correspond à n'importe quelle lettre minuscule.
  • [A-Z] : Correspond à n'importe quelle lettre majuscule.

Les accolades { } {2,} {2,5}

Les accolades servent à spécifier le nombre d'occurrences d'un pattern :

  • {n} : Correspond exactement à n occurrences. Par exemple @{2} va chercher toutes les chaînes où le symbole @ a été trouvé 2 fois de suite.
  • {n,} : Correspond à au moins n occurrences. En fait, le symbole + est équivalent à {1,} (un ou plus éléments trouvés). C'est exactement la même astuce qui permet de faire des remplacements spéciaux dans Word depuis plus de 30 ans.
  • {n,m} : Correspond à au moins n occurrences mais pas plus de m. {2,5} (au moins 2 mais pas plus de 5)

Les parenthèses ( ) pour les groupes

Les parenthèses sont utilisées pour grouper des parties d'une expression régulière. Cela permet de capturer des sous-expressions pour une utilisation ultérieure ou d'appliquer des quantificateurs à l'ensemble du groupe.

  • (\d{2}\s) => groupe de 2 chiffres suivi d'un espace (pour la recherche de numéros de téléphone français)
  • (\d{2}\s){3} => (\d{2}\s) => groupe de 2 chiffres suivi d'un espace qui se répète 3 fois

Précède ou Suit

Les assertions d'antériorité sont des types de lookbehind assertions :

  • (?<=) : Assertion d'antériorité positive. Correspond à un motif qui est précédé par une certaine séquence.
  • (? : Assertion d'antériorité négative. Correspond à un motif qui n'est pas précédé par une certaine séquence.

Les assertions de suivi sont des types de lookahead assertions :

  • (?!) : Assertion de suivi négative. Correspond à un motif qui n'est pas suivi par une certaine séquence.
  • (?=) : Assertion de suivi positive. Correspond à un motif qui est suivi par une certaine séquence.

Raccourci [[:punct]]

Le raccourci [[:punct:]] correspond à n'importe quel signe de ponctuation. Cela inclut des caractères comme le point, la virgule, le point d'interrogation, etc.

Les expressions régulières sont des outils puissants pour manipuler et rechercher des textes. En comprenant ces symboles et leurs usages, vous pouvez effectuer des recherches et des modifications complexes de manière efficace.

Articles liés

  • Pour tester vos pattern, vous pouvez utiliser le site regex101.com

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.