Cours Expressions rationnelles en PDF (Intermédiaire)
Les expressions rationnelles (Regex) : Ce qu'il faut savoir. Une expression rationnelle (Regex) est une suite de caractères décrivant un motif servant à rechercher ou remplacer des sections de texte. Les regex sont un outil central des environnements UNIX pour filtrer et transformer des flux texte avec des outils comme grep, sed et awk. Ce document de 12 pages, rédigé par Thierry Vaira, est disponible en PDF gratuit et contient des exemples pratiques exploitables en ligne de commande.
🎯 Ce que vous allez apprendre
- Quantificateurs et instances — Maîtriserez l'usage des quantificateurs
?,*,+,{n},{n,m}pour contrôler la répétition d'un motif. Vous saurez choisir entre quantification gourmande ou bornée et identifier des cas concrets oùa{2,4}outoto+simplifient une recherche. - Opérateurs de base et alternance — Comprendrez la concaténation implicite, le métacaractère point
.et l'opérateur d'alternance|pour combiner motifs et branches et construire des motifs modulaires et lisibles pour des recherches dans des logs ou fichiers de configuration. - Classes de caractères et négation — Serez capable d'utiliser les classes littérales
[aeiou]et les classes POSIX prédéfinies comme[[:digit:]]ou[[:alnum:]]. Vous pourrez remplacer des constructions verbeuses par des classes robustes et portables, utiles pour valider codes postaux ou identifiants ASCII. - Groupes capturants et backreferences — Saisirez l'utilisation des parenthèses pour regrouper et capturer des sous-motifs, ainsi que la réutilisation via
\1pour effectuer des remplacements conditionnels avecsedou extraire des champs structurés. - Ancrages et échappement — Apprécierez l'effet des ancres
^et$et connaîtrez les règles d'échappement du caractère\selon le moteur utilisé pour éviter les faux positifs. - Standards POSIX et moteurs — Distinguerez BRE, ERE et la compatibilité PCRE/PCRE2, et identifierez les différences d'interprétation des métacaractères entre
grep(-E, -P) etsed. Vous pourrez choisir le mode adapté selon la portabilité souhaitée.
📑 Sommaire du document
- Quantificateurs I
- Quantificateurs II
- Opérateurs de base I
- Opérateurs de base II
- Opérateurs de base III
- Standards I
- Classes de caractères I
- Exemple
💡 Pourquoi choisir ce cours ?
La fiche de Thierry Vaira se distingue par sa concision pédagogique et son ancrage pratique : en 12 pages, elle couvre les quantificateurs, classes POSIX et les particularités des moteurs BRE/ERE, avec extraits de commandes réelles. L'approche privilégie l'application immédiate en shell, illustrée par des exemples exploitables avec grep et sed, facilitant la mise en pratique lors d'opérations de filtrage et de nettoyage de fichiers. Le format synthétique favorise une montée en compétence rapide pour les intervenants système et développeurs en traitement de texte.
👤 À qui s'adresse ce cours ?
- Public cible : administrateurs système, développeurs et utilisateurs avancés UNIX/Linux ayant besoin d'automatiser le traitement de texte (logs, CSV simples, fichiers de configuration) via
grep,sedouawk. - Prérequis : maîtrise de base de la ligne de commande Unix (pipes, redirections,
cat), connaissance élémentaire des fichiers texte (ASCII/UTF-8) et notions initiales d'expressions régulières pour suivre les exemples pratiques ; une familiarité opérationnelle avec les utilitairesgrep,sedetawkest recommandée.
Regex vs Wildcards (Globbing)
Les expressions rationnelles (Regex) et le globbing sont deux mécanismes distincts. Le globbing, utilisé par le shell pour l'expansion de noms de fichiers (par exemple ls *.txt), opère au niveau du système de fichiers et emploie des jokers simples comme * et ?. Les Regex effectuent un pattern matching sur le contenu des chaînes et offrent une granularité beaucoup plus fine (classes, quantificateurs, groupes, ancrages). Pour trier des fichiers en fonction de leur contenu ou analyser des logs, privilégiez les regex ; pour sélectionner des fichiers sur disque, le globbing suffit et reste plus performant.
Pourquoi maîtriser les Regex en administration système ?
La maîtrise des Regex accélère l'automatisation des tâches courantes : extraction de champs dans des logs, filtrage conditionnel lors d'analyses, validation d'identifiants ou nettoyage de flux texte. En contexte d'exploitation, l'utilisation combinée de pattern matching et de Scripting Bash permet de créer des scripts robustes de filtrage de logs et d'alerting. Les motifs adaptés réduisent le nombre d'étapes de post-traitement, limitent les faux positifs et facilitent l'intégration à des pipelines CI/CD ou à des outils de supervision.
Différences entre BRE, ERE et PCRE
BRE (Basic Regular Expressions) est la variante POSIX historique où certains métacaractères (accolades, parenthèses, ?, +) doivent être échappés. ERE (Extended Regular Expressions) rend ces éléments disponibles sans échappement, améliorant la lisibilité. PCRE (Perl-Compatible Regular Expressions) offre une sémantique plus riche (lookahead, lookbehind, classes Unicode étendues) et est implémenté par des moteurs comme PCRE2. Dans les outils : grep -E active ERE, grep -P (GNU grep) utilise PCRE, et sed fonctionne en BRE par défaut, avec des options pour activer la syntaxe étendue selon l'implémentation.
Outils de test en ligne
Valider un motif avant de l'intégrer dans un script réduit les erreurs en production. Des outils en ligne (par exemple Regex101) permettent de tester un motif contre des échantillons, de choisir la flavor (PCRE, JavaScript, Python), d'afficher les captures et d'interpréter les drapeaux. Ces environnements offrent aussi des explications pour chaque composant du motif, ce qui facilite le débogage et l'optimisation avant usage en Scripting Bash ou inclusion dans une pipeline.
❓ Foire Aux Questions (FAQ)
Quelle différence pratique entre BRE et ERE et quand échapper les métacaractères ? En BRE, les accolades, parenthèses et les signes ? et + ne sont pas métacaractères par défaut et doivent être échappés par \, alors qu'en ERE ils sont reconnus sans échappement. Choisissez BRE pour la compatibilité POSIX historique (ex : grep sans -E) et ERE pour des motifs plus lisibles ou lorsque vous utilisez grep -E ou sed en mode étendu.
Comment utiliser les classes POSIX pour filtrer des codes postaux avec grep et sed ? Utilisez des classes comme [[:digit:]] pour représenter les chiffres de façon portable plutôt que [0-9], par exemple (84|13)[[:digit:]]{3} en ERE pour cibler des codes postaux. En BRE, il faudra échapper les accolades et l'alternance selon l'outil, ou recourir à grep -E pour une syntaxe plus concise.
Cas pratiques : Utiliser les Regex avec grep et sed
Exemple concret pour repérer les lignes commençant par deux chiffres (préfixe département) dans un fichier :
grep -E '^[0-9]{2}' fichier.txt — recherche toutes les lignes dont les deux premiers caractères sont des chiffres. Cette commande utilise la syntaxe ERE via -E pour simplifier la notation des quantificateurs.
Ressources complémentaires
- Aide-mémoire Regex PDF
- Exercices Bash