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.
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.
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 :
- 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. - Traitement de texte et expressions régulières — Découvrez les puissants outils
grep,sedetawk, puis utilisez les expressions régulières pour manipuler et rechercher efficacement du texte sous Linux. - Extraction d'e-mails et de nombres — Utilisez
grepet 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