regex (Expressions Régulières)
100%

Text-Fu Avancé · Leçon 1

regex (Expressions Régulières)

Découvrez comment les ancres, les ensembles de caractères, les répétitions et les variantes de regex contrôlent la recherche de motifs textuels.

Les expressions régulières, souvent abrégées en regex, décrivent des motifs textuels. Des outils comme grep, sed et awk les utilisent, mais la syntaxe prise en charge peut différer : identifiez donc toujours l'outil et la variante de regex employés.

GNU grep utilise par défaut les expressions régulières basiques (BRE), et les expressions régulières étendues (ERE) avec -E. Cette leçon présente d'abord les constructions communes aux deux variantes, puis quelques ajouts courants des ERE.

Utilisez ce texte dans les exemples :

sally sells seashells
by the seashore

Rechercher du texte littéral

La plupart des caractères ordinaires correspondent à eux-mêmes. Le motif seashells sélectionne une ligne qui contient cette suite exacte, où qu'elle se trouve :

$ grep 'seashells' sample.txt
sally sells seashells

Placez les motifs regex entre guillemets simples afin que le shell ne les développe ni ne les découpe avant que l'outil de recherche ne les reçoive. Une regex diffère aussi du développement des noms de chemins par le shell : dans une regex, * répète l'élément précédent ; dans un motif glob du shell, * est lui-même un joker représentant une suite de caractères d'un chemin.

Quel est le rôle de * dans une expression régulière telle que ab* ?

Ancrer une correspondance

En dehors d'une expression entre crochets, ^ placé au début d'un motif ancre la correspondance au début de la ligne :

^by

L'ancre $ impose une correspondance à la fin de la ligne :

seashore$

Combinez les deux ancres lorsque la ligne entière doit correspondre au motif :

^by the seashore$

Quel motif correspond uniquement à une ligne dont le texte complet est by the seashore ?

Rechercher un caractère

Dans le mode habituel où le traitement se fait ligne par ligne, le point correspond à un caractère :

b.

Ce motif correspond à by, mais aussi à ba ou b7. Il ne correspond pas à un b isolé, car un caractère est requis après celui-ci. Pour rechercher un point littéral, échappez-le sous la forme \. ou placez-le dans une expression entre crochets adaptée.

Quelle chaîne ne correspond pas au motif de ligne complète ^b.$ ?

Utiliser les expressions entre crochets

Une expression entre crochets correspond à un caractère parmi un ensemble donné :

s[ae]lls

À cette position, le motif correspond à sells ou à salls.

Lorsque ^ est le premier caractère après [, il inverse l'ensemble :

s[^e]lls

Ce motif correspond à salls, mais pas à sells, car le caractère qui suit le premier s ne peut pas être e.

À quoi correspond [^e] ?

Les plages permettent de décrire les caractères situés entre deux bornes :

d[a-c]g

Ce motif peut correspondre à dag, dbg ou dcg. Le comportement des plages peut dépendre de l'ordre de classement de la locale. Les classes de caractères comme [[:lower:]], [[:upper:]] et [[:digit:]] expriment souvent l'intention plus clairement.

Répéter et combiner des motifs

En BRE comme en ERE, * signifie zéro ou plusieurs répétitions de l'élément précédent :

seashells*

Ce motif correspond à seashell suivi de zéro ou plusieurs caractères s supplémentaires. En mode ERE avec grep -E, les opérateurs courants comprennent :

  • + : une ou plusieurs répétitions ;
  • ? : zéro ou une répétition ;
  • | : soit l'expression de gauche, soit celle de droite ;
  • (...) : le regroupement d'expressions.

Par exemple :

$ grep -E '^(cat|dog)s?$' animals.txt

Cette commande sélectionne les lignes complètes égales à cat, cats, dog ou dogs. En mode BRE, ces opérateurs suivent d'autres règles d'échappement : ne recopiez donc pas un motif d'une variante à l'autre sans les vérifier.

Quelle commande active la syntaxe regex étendue pour le motif ^(cat|dog)s?$ ?

Pour vous exercer à sélectionner du texte avec les outils Linux, essayez ces laboratoires pratiques :

  1. Rechercher du texte avec grep sous Linux — Apprenez à rechercher du texte dans des fichiers avec grep, à afficher les numéros de ligne, à employer les ancres ^ et $, ainsi qu'à exploiter les expressions régulières basiques et étendues.
  2. Traitement de texte et expressions régulières — Découvrez les puissants outils grep, sed et awk, puis utilisez les expressions régulières pour manipuler et rechercher efficacement du texte sous Linux.
  3. Extraction d'e-mails et de nombres — Utilisez grep et les expressions régulières pour extraire des adresses e-mail et des nombres d'un fichier.

Leçon terminée

Vous avez terminé regex (Expressions Régulières)

Vous savez maintenant lire et construire des expressions régulières fondamentales appliquées ligne par ligne.

  • Distinguer les opérateurs regex des jokers de chemins du shell.

  • Ancrer une correspondance au début ou à la fin d'une ligne.

  • Rechercher un caractère avec un point ou une expression entre crochets.

  • Inverser un ensemble et utiliser des classes de caractères adaptées à la locale.

  • Choisir délibérément la syntaxe BRE ou ERE.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Text-Fu Avancé