Expressions régulières
Syntaxe et mise en oeuvre (avec exercices et corrigés)
2e édition
Martial Bornet
Avant-propos
Chapitre 1
Introduction
1. Qu'est-ce qu'une expression régulière ?33
2. Qu'est-ce qu'un métacaractère ?34
3. Origine des expressions régulières34
4. Avertissement relatif aux expressions régulières36
5. Avertissement relatif aux commandes GNU/Linux36
6. Avertissement relatif à la portabilité36
7. Rappels de base concernant le shell37
8. Conseil important pour la qualité et la fiabilité du code38
9. Programme d'aide à la compréhension du shell38
Chapitre 2
Les interpréteurs de commandes, ou shells
1. Description41
2. Historique42
3. Les caractères de sélection de noms de fichiers43
3.1 La découverte des expressions régulières par l'utilisateur43
3.2 La spécificité des expressions de sélection du shell43
3.3 Rappel sur les fichiers cachés45
3.4 Le métacaractère *45
3.5 Le métacaractère ?47
3.6 Les métacaractères []48
4. Les autres caractères spéciaux50
5. La commande de traitements sélectifs51
5.1 Le métacaractère *52
5.1.1 Exemple 1 53
5.1.2 Exemple 2 53
5.2 Le métacaractère ?54
5.3 Les métacaractères []55
5.3.1 Exemple 1 55
5.3.2 Exemple 2 56
5.3.3 Exemple 3 56
5.3.4 Conseil d'écriture59
6. Mise en garde sur le décodage des arguments59
7. Exercices63
7.1 Exercice 1 63
7.2 Exercice 2 64
7.3 Exercice 3 64
7.4 Exercice 4 65
7.5 Exercice 5 70
7.6 Exercice 6 70
7.7 Exercice 7 71
7.8 Exercice 8 71
Chapitre 3
find, la commande de recherche de fichiers
1. Description73
2. Principe de fonctionnement74
3. Les options liées à l'i-node76
3.1 Option -type76
3.2 Option -perm77
3.3 Option-links77
3.4 Option -user78
3.5 Option -uid78
3.6 Option-group79
3.7 Option -size79
3.8 Option -inum80
3.9 Option -atime80
3.10 Option -mtime81
3.11 Option -exec81
3.12 Option -ok82
3.13 Option -print83
3.14 Option -newer84
3.15 Option -ls84
3.16 Option-prune85
3.17 Autres options86
4. Les options liées au nom86
4.1 Option-name87
4.2 Option-iname88
4.3 Option -Iname88
4.4 Option -ilname90
4.5 Option -path91
4.6 Option -ipath92
4.7 Option-regex93
4.8 Option -iregex94
4.9 Option-regextype94
4.10 Option-wholename95
4.11 Option -iwholename96
5. Les expressions de sélection96
5.1 Utilisation du caractère ?96
5.2 Utilisation du caractère *96
5.3 Utilisation des caractères [et]96
6. Les expressions étendues97
6.1 Utilisation du caractère97
6.2 Utilisation des caractères [et]97
6.3 Utilisation du caractère *97
6.4 Utilisation du caractère +97
6.5 Utilisation du caractère ?97
6.6 Utilisation du caractère |98
6.7 Utilisation des caractères (et)98
6.8 Utilisation du caractère ^98
6.9 Utilisation du caractère $98
6.10 Utilisation du caractère \98
6.11 Utilisation des caractères {et}98
7. Exercices99
7.1 Exercice 199
7.2 Exercice 2100
7.3 Exercice 3101
7.4 Exercice 4102
7.5 Exercice 5103
7.6 Exercice 6103
Chapitre 4
ed, l'éditeur ligne
1. Description105
2. Rappel de quelques commandes106
2.1 Les différents modes106
2.2 Adressage des lignes107
2.2.1 Références à des lignes par numéros107
2.2.2 Références à des lignes par des recherches108
2.3 Recherche de chaînes de caractères108
2.4 Recherche globale de chaînes de caractères109
2.5 Saisie de texte110
2.6 Suppression de lignes110
2.7 Affichage des lignes111
2.8 Substitution de chaînes de caractères112
2.9 Enregistrement des modifications113
2.10 Sortie de l'éditeur114
3. Les expressions régulières114
3.1 Généralités114
3.2 Utilisation du caractère114
3.2.1 Signification114
3.2.2 Recherche d'une expression en début de ligne115
3.2.3 Insertion d'une chaîne en début de ligne115
3.2.4 Substitution d'une expression en début de ligne116
3.3 Utilisation du caractère $116
3.3.1 Ajout d'une chaîne en fin de ligne116
3.3.2 Substitution d'une expression en fin de chaîne117
3.4 Utilisation du caractère,117
3.5 Utilisation des caractères []117
3.6 Utilisation du caractère *118
3.7 Utilisation des caractères \< et \>118
3.7.1 Recherche d'un début de mot119
3.7.2 Recherche d'une fin de mot 119
3.7.3 Recherche d'un mot entier119
3.8 Utilisation du caractère &120
3.9 Référence à des expressions121
4. Exercices123
4.1 Suppression en fin de ligne123
4.2 Insertion en début de ligne123
4.3 Substitution de chaîne124
4.4 Substitution avec références124
4.4.1 Exercice 4124
4.4.2 Exercice 5125
4.4.3 Exercice 6126
4.4.4 Exercice 7126
4.5 Affichage sélectif127
4.5.1 Exercice 8127
4.5.2 Exercice 9127
4.5.3 Exercice 10128
4.6 Insertion en début de ligne130
Chapitre 5
sed, l'éditeur de flux (stream editor)
1. Description131
2. Rappels de fonctionnement132
2.1 Principe de fonctionnement132
2.2 Adressage des lignes133
2.2.1 Principe d'adressage133
2.2.2 Références à des lignes par numéros134
2.2.3 Références à des lignes par des recherches134
2.3 Rappel de quelques commandes135
2.3.1 Recherche de chaînes de caractères135
2.3.2 Ajout de texte135
2.3.3 Insertion de texte136
2.3.4 Remplacement de texte137
2.3.5 Suppression de texte138
2.3.6 Substitution de texte139
2.3.7 Définition d'étiquette140
2.3.8 Branchement inconditionnel141
2.3.9 Branchement conditionnel141
2.3.10 Groupement d'instructions141
3. Les expressions basiques142
3.1 Utilisation du caractère ^142
3.1.1 Signification142
3.1.2 Recherche d'une expression en début de ligne142
3.1.3 Insertion d'une chaîne en début de ligne143
3.1.4 Substitution d'une expression en début de ligne144
3.2 Utilisation du caractère $144
3.2.1 Signification.144
3.2.2 Ajout d'une chaîne en fin de ligne144
3.2.3 Substitution d'une expression en fin de ligne145
3.3 Utilisation du caractère145
3.4 Utilisation des caractères []145
3.5 Utilisation du caractère *146
3.6 Utilisation du caractère &147
3.7 Référence à des expressions147
4. Les expressions étendues148
4.1 Avertissement148
4.2 Utilisation du caractère148
4.3 Utilisation des caractères [et]148
4.4 Utilisation du caractère *149
4.5 Utilisation du caractère +149
4.6 Utilisation du caractère ?149
4.7 Utilisation du caractère |149
4.8 Utilisation des caractères (et)149
4.9 Utilisation du caractère ^149
4.10 Utilisation du caractère $150
4.11 Utilisation du caractère \150
4.12 Utilisation des caractères {et}150
5. Exercices151
5.1 Exercice 1151
5.2 Exercice 2152
5.3 Exercice 3153
5.4 Exercice 4154
5.5 Exercice 5155
5.6 Exercice 6156
Chapitre 6
ex, l'éditeur ligne de vi
1. Description157
2. Principe de fonctionnement 158
3. Rappel de quelques commandes159
3.1 Les différents modes159
3.1.1 Interface utilisateur159
3.1.2 Mode commandes, mode saisie159
3.2 Adressage des lignes160
3.2.1 Références à des lignes par numéros161
3.2.2 Références à des lignes par des recherches162
3.3 Recherche de chaînes de caractères162
3.4 Recherche globale de chaînes de caractères163
3.5 Saisie de texte164
3.6 Suppression de lignes167
3.6.1 Suppression de la ligne courante167
3.6.2 Suppression d'une ligne167
3.6.3 Suppression d'un groupe de lignes167
3.7 Affichage des lignes168
3.8 Substitution de chaînes de caractères169
3.9 Manipulation de la casse des lettres170
3.9.1 Séquence \u170
3.9.2 Séquence \U171
3.9.3 Séquence \1 171
3.9.4 Séquence \L171
3.9.5 Séquence \e ou \E172
3.10 Enregistrement des modifications173
3.11 Sortie de l'éditeur173
4. Quelques spécificités de ex par rapport à ed173
5. Les expressions régulières175
5.1 Généralités 175
5.2 Utilisation du caractère ^175
5.2.1 Utilisation175
5.2.2 Recherche d'une expression en début de ligne175
5.2.3 Insertion d'une chaîne en début de ligne176
5.2.4 Substitution d'une expression en début de ligne176
5.3 Utilisation du caractère $176
5.3.1 Ajout d'une chaîne en fin de ligne177
5.3.2 Substitution d'une expression en fin de chaîne177
5.4 Utilisation du caractère177
5.5 Utilisation des caractères []178
5.6 Utilisation du caractère *178
5.7 Utilisation des caractères \< et \>178
5.7.1 Recherche d'un début de mot179
5.7.2 Recherche d'une fin de mot179
5.7.3 Recherche d'un mot entier179
5.8 Utilisation du caractère &180
5.9 Référence à des expressions181
6. Exercices182
Chapitre 7
vi, le premier éditeur plein écran
1. Description183
2. Principe de fonctionnement184
2.1 Généralités184
2.2 Rappel de quelques commandes184
2.2.1 Édition d'un fichier184
2.2.2 Ajout de texte185
2.2.3 Insertion de texte185
2.2.4 Modification de texte185
2.2.5 Suppression de texte186
2.2.6 Enregistrement des modifications187
2.2.7 Accès au mode ligne de ex187
2.2.8 Accès aux variables de paramétrage187
3. Les expressions régulières188
3.1 Généralités188
3.2 Recherches de-chaînes de caractères189
3.3 Utilisation du caractère ^190
3.4 Utilisation du caractère $190
3.5 Utilisation du caractère190
3.6 Utilisation des caractères []190
3.7 Utilisation du caractère *191
3.8 Utilisation des caractères \< et \>191
3.8.1 Recherche d'un début de mot192
3.8.2 Recherche d'une fin de mot192
3.8.3 Recherche d'un mot entier 192
Chapitre 8
vim, l'éditeur vi amélioré (VI IMproved)
1. Description193
2. Principe de fonctionnement194
2.1 Généralités194
2.2 Spécificités194
2.2.1 Avertissement194
2.2.2 Mise en surbrillance195
2.2.3 Reconnaissance de caractères particuliers196
2.2.4 Accès aux expressions régulières étendues198
3. Les expressions régulières basiques198
3.1 Utilisation du caractère ^198
3.2 Utilisation du caractère $198
3.3 Utilisation du caractère198
3.4 Utilisation des caractères []199
3.5 Utilisation du caractère *199
3.6 Utilisation des caractères \< et \>200
3.6.1 Recherche d'un début de mot200
3.6.2 Recherche d'une fin de mot200
3.6.3 Recherche d'un mot entier200
4. Les expressions régulières étendues201
4.1 Utilisation du caractère ^201
4.2 Utilisation du caractère $201
4.3 Utilisation du caractère201
4.4 Utilisation des caractères []202
4.5 Utilisation des caractères \ ( ... \)202
4.6 Utilisation du caractère *202
4.7 Utilisation des caractères \+203
4.8 Utilisation des caractères \ ?203
4.9 Utilisation des caractères \ {n, p} ?203
4.10 Utilisation des caractères \ {n,} \203
4.11 Utilisation des caractères \ {, p}203
4.12 Utilisation des caractères \ {n}204
4.13 Utilisation des caractères \ {}204
4.14 Utilisation des caractères \ {-n, p}204
4.15 Utilisation des caractères \ {-n}204
4.16 Utilisation des caractères \ {-n,}204
4.17 Utilisation des caractères \ {-, p}204
4.18 Utilisation des caractères \ {-}205
4.19 Utilisation des caractères \|205
4.20 Utilisation des caractères \< et \>205
Chapitre 9
bvi, l'éditeur binaire/hexadécimal plein écran
1. Description207
2. Points communs avec vi209
3. Spécificités de bvi209
4. Rappel de quelques commandes210
4.1 Avertissement.210
4.2 Positionnement en début de ligne211
4.3 Positionnement en fin de ligne211
4.4 Déplacements du curseur211
4.5 Ajout d'octets212
4.6 Insertion d'octets.212
4.7 Remplacement d'octets213
4.8 Suppression d'octets213
4.9 Écriture du fichier modifié214
5. Les expressions régulières214
5.1 Généralités214
5.2 Recherche en début de ligne214
5.3 Recherche en fin de ligne215
5.4 Recherche d'expressions régulières215
5.4.1 Modes de recherche215
5.4.2 Utilisation du caractère216
5.4.3 Utilisation des caractères []216
5.4.4 Utilisation du caractère *216
6. Commande bmore217
7. Exercices218
7.1 Exercice 1218
7.2 Exercice 2219
7.3 Exercice 3219
7.4 Exercice 4220
7.5 Exercice 5221
7.6 Exercice 6221
7.7 Exercice 7222
7.8 Exercice 8224
Chapitre 10
grep, la commande de recherche de lignes
1. Description225
2. Principe de fonctionnement226
2.1 Généralités.226
2.2 Rappel de quelques options227
3. Les expressions basiques227
3.1 Généralités227
3.2 Utilisation du caractère ^228
3.3 Utilisation du caractère $. ?228
3.4 Utilisation du caractère228
3.5 Utilisation du caractère *229
3.6 Utilisation des caractères []229
3.7 Utilisation des caractères \< et \>230
3.8 Utilisation du caractère \230
3.9 Classes de caractères230
4. Les expressions étendues231
4.1 Généralités231
4.2 Utilisation des caractères ()232
4.3 Utilisation du caractère |232
4.4 Utilisation du caractère ?232
4.5 Utilisation du caractère *232
4.6 Utilisation du caractère +233
4.7 Utilisation des caractères {}233
5. Exercices234
5.1 Exercice 1234
5.2 Exercice 2234
5.3 Exercice 3235
5.4 Exercice 4237
5.5 Exercice 5240
5.6 Exercice 6242
Chapitre 11
expr, la commande d'évaluation d'expressions
1. Description245
2. Principe de fonctionnement246
2.1 Généralités246
2.2 Les parenthèses247
2.3 Les opérateurs arithmétiques247
2.4 Les opérateurs de comparaison248
2.5 Les opérateurs booléens249
2.6 La comparaison à une expression régulière250
2.7 Extraction d'une chaîne correspondant à une expression251
3. Attention aux pièges251
3.1 Interprétation par le shell251
3.2 Respect de la syntaxe252
3.3 Valeurs nulles253
4. Exercices254
4.1 Exercice 1254
4.2 Exercice 2255
Chapitre 12
awk, la commande de traitement de fichiers
1. Description257
2. Principe de fonctionnement258
2.1 Principe général258
2.2 Expression de sélection259
2.3 Séparateur de champs260
2.4 Éléments de syntaxe du langage261
2.4.1 Généralités261
2.4.2 Instructions262
2.4.3 Variables262
2.4.4 Tableaux associatifs263
2.4.5 Fonctions définies par l'utilisateur263
2.4.6 Fonctions intégrées au langage264
2.4.7 Opérations arithmétiques264
2.4.8 Tests264
2.4.9 Contrôle de boucles265
3. Les expressions régulières265
3.1 Utilisation265
3.2 Recherche de correspondance266
3.2.1 Recherche avec / .../266
3.2.2 Recherche avec ~266
3.2.3 Recherche avec ! ~267
3.3 Utilisation du caractère ^267
3.4 Utilisation du caractère $268
3.5 Utilisation du caractère268
3.6 Utilisation des caractères []268
3.7 Utilisation du caractère *269
3.8 Recherche d'un mot entier269
4. Fonctions de manipulation de chaînes270
4.1 Fonction length ()270
4.2 Fonction sub ()270
4.3 Fonction gsub ()271
4.4 Fonction match ()272
5. Exercices272
5.1 Exercice 1272
5.2 Exercice 2277
5.3 Exercice 3280
5.4 Exercice 4283
5.5 Exercice 5284
Chapitre 13
du, l'affichage de l'usage des disques
1. Description287
2. Principe de fonctionnement288
2.1 Généralités288
2.2 Options relatives aux expressions génériques288
2.2.1 Option-X, ou-exclude-from=FICHIER288
2.2.2 Option -exclude=MODELE289
Chapitre 14
lex, le générateur d'analyseurs lexicaux
1. Description291
2. Principe de fonctionnement293
2.1 Généralités293
2.2 Structure d'un programme lex293
2.2.1 Première section294
2.2.2 Deuxième section295
2.2.3 Troisième section295
2.3 Génération du binaire297
3. Les expressions régulières298
3.1 Localisation des expressions régulières298
3.2 Utilisation du caractère "299
3.3 Utilisation du caractère \299
3.4 Utilisation des caractères ⎵ et →300
3.5 Utilisation du caractère301
3.6 Utilisation des caractères []301
3.7 Utilisation du caractère ^302
3.8 Utilisation des caractères ()302
3.9 Utilisation du caractère *303
3.10 Utilisation du caractère +303
3.11 Utilisation du caractère ?304
3.12 Utilisation des caractères {}305
3.13 Utilisation du caractère |306
4. Les règles306
4.1 Localisation des règles de traitement306
4.2 Utilisation du caractère ^307
4.3 Utilisation du caractère $307
4.4 Utilisation du caractère /308
5. Exercices 309
5.1 Exercice 1309
5.2 Exercice 2310
5.3 Exercice 3311
5.4 Exercice 4312
5.5 Exercice 5313
5.6 Exercice 6313
5.7 Exercice 7315
5.8 Exercice 8316
5.9 Exercice 9318
5.10 Exercice 10318
5.11 Exercice 11320
Chapitre 15
glob (), la fonction de sélection de pathnames
1. Description323
2. Principe de fonctionnement323
2.1 Généralités323
2.2 Utilisation324
3. Exercices328
3.1 Exercice 1328
3.2 Exercice 2329
Chapitre 16
regcomp (), regexec (), la gestion des ER
1. Description335
2. Rappel du principe de fonctionnement336
2.1 Généralités336
2.2 Utilisation336
2.3 Utilisation de regcomp ()337
2.4 Utilisation de regexec ()339
3. Exercices341
3.1 Exercice 1341
3.2 Exercice 2344
3.3 Exercice 3348
Chapitre 17
hl, une commande de colorisation
1. Description355
2. Principe de fonctionnement357
3. Description des options358
3.1 Usage de la commande358
3.2 Options de couleurs359
3.3 Option-h359
3.4 Option -v360
3.5 Option-u 360
3.6 Option -e360
3.7 Option -i360
3.8 Option -E360
3.9 Option -d361
3.10 Option -D361
4. Exercices362
4.1 Exercice 1362
4.2 Exercice 2363
4.3 Exercice 3364
4.4 Exercice 4364
4.5 Exercice 5365
4.6 Exercice 6365
4.7 Exercice 7366
4.8 Exercice 8367
4.9 Exercice 9370
Chapitre 18
fo, une commande de formatage
1. Description371
2. Les expressions régulières372
3. Exemple d'utilisation372
Chapitre 19
bash, l'interpréteur de commandes de GNU
1. Description377
2. Les modèles étendus378
2.1 Les nouvelles syntaxes378
2.2 Les options de configuration379
2.2.1 dotglob380
2.2.2 extglob380
2.2.3 failglob380
2.2.4 globasciiranges381
2.2.5 globstar382
2.2.6 nocaseglob383
2.2.7 nocasematch384
2.2.8 nullglob385
2.3 Les variables utilisant des modèles386
2.3.1 EXECIGNORE386
2.3.2 HISTIGNORE386
2.3.3 GLOBIGNORE387
3. Les opérateurs de comparaison388
3.1 Les opérateurs liés aux modèles388
3.2 L'opérateur lié aux expressions régulières389
Chapitre 20
Les expressions régulières en C#
1. Généralités393
2. Les expressions régulières393
3. Manipulation des expressions régulières395
3.1 Compilation d'expression régulière395
3.2 Recherche de chaînes.398
3.2.1 Fonction Regex. Match ()398
3.2.2 Fonction Regex. IsMatch ()400
3.2.3 Fonction Regex. Matches ()403
3.3 Substitution de chaînes405
3.4 Découpage de chaînes407
Chapitre 21
Les expressions régulières en C++
1. Généralités 409
2. Les expressions régulières410
3. Manipulation des expressions régulières411
3.1 Compilation d'expression régulière411
3.2 Recherche de chaînes412
3.2.1 Méthode std::regex_match412
3.2.2 Méthode std::regex_search416
3.3 Substitution de chaînes418
Chapitre 22
Les expressions régulières en Go
1. Généralités421
2. Les expressions régulières422
3. Manipulation des expressions régulières422
3.1 Compilation d'expression régulière423
3.1.1 Fonction Compile ()423
3.1.2 Fonction CompilePOSIX ()424
3.1.3 Fonction MustCompile ()425
3.1.4 Fonction MustCompilePOSIX ()425
3.2 Recherche de chaînes426
3.2.1 Fonction MatchString ()426
3.2.2 Fonction FindString ()427
3.2.3 Fonction FindAllString ()427
3.2.4 Fonction FindStringSubmatch ()428
3.2.5 Fonctioh, FindStringSubmatchIndex ()429
3.3 Substitution de chaînes430
3.3.1 Fonction ReplaceAll ()430
3.3.2 Fonction ReplaceAllString ()431
3.4 Manipulation de chaînes432
Chapitre 23
Les expressions régulières en Java
1. Généralités435
2. Les expressions régulières436
3. Manipulation des expressions régulières436
3.1 Compilation d'expression régulière437
3.2 Recherche de chaînes437
3.2.1 Fonction Pattern.matcher ()437
3.2.2 Fonction Matcher.matches ()438
3.2.3 Fonction Matcher.find ()440
3.3 Substitution de chaînes441
3.3.1 Fonction Matcher.replaceFirst ()441
3.3.2 Fonction Matcher.replaceAll ()442
3.4 Découpage de chaînes443
Chapitre 24
Les expressions régulières en JavaScript
1. Généralités445
2. Utilisation des expressions régulières445
3. Les expressions régulières446
3.1 Utilisation du caractère446
3.2 Utilisation du caractère \446
3.3 Utilisation des caractères []447
3.4 Utilisation du caractère *448
3.5 Utilisation du caractère +448
3.6 Utilisation du caractère ?448
3.7 Utilisation des caractères ()448
3.8 Utilisation des caractères (?...)449
3.9 Utilisation des caractères (?=...)449
3.10 Utilisation des caractères (?!...)449
3.11 Utilisation des caractères {n}449
3.12 Utilisation des caractères {n,}449
3.13 Utilisation des caractères {n ; p}450
3.14 Utilisation du caractère |450
3.15 Utilisation du caractère ^450
3.16 Utilisation du caractère $450
Chapitre 25
Les expressions régulières avec Julia
1. Généralités451
2. La définition des expressions régulières452
3. Manipulation des expressions régulières455
3.1 Recherche de chaînes455
3.1.1 Fonction occursin ()455
3.1.2 Fonction match () 455
3.2 Substitution de chaînes458
4. Modificateurs de signification460
Chapitre 26
Les expressions régulières en Perl
1. Généralités.463
2. Intégration des expressions régulières au langage464
2.1 Généralités464
2.2 Avertissement464
2.3 Recherche de chaînes464
2.4 Substitution de chaînes467
3. Les expressions régulières468
3.1 Utilisation du caractère468
3.2 Utilisation du caractère \468
3.3 Utilisation des caractères []469
3.4 Utilisation du caractère *470
3.5 Utilisation des caractères * ?470
3.6 Utilisation du caractère +470
3.7 Utilisation des caractères + ?470
3.8 Utilisation du caractère ?470
3.9 Utilisation des caractères ??471
3.10 Utilisation des caractères ()471
3.11 Utilisation des caractères (?imsx-imsx)471
3.12 Utilisation des caractères (?imsx-imsx :...)471
3.13 Utilisation des caractères (? :...)471
3.14 Utilisation des caractères (? #...)472
3.15 Utilisation des caractères (? =...)472
3.16 Utilisation des caractères (?!...)472
3.17 Utilisation des caractères (? < =.)472
3.18 Utilisation des caractères (? < !...)472
3.19 Utilisation des caractères (? >...)473
3.20 Utilisation des caractères (? {...})473
3.21 Utilisation des caractères {n}473
3.22 Utilisation des caractères {n,}473
3.23 Utilisation des caractères {n,p}473
3.24 Utilisation des caractères {n,} ?473
3.25 Utilisation des caractères {n,p} ?474
3.26 Utilisation du caractère | 474
3.27 Utilisation du caractère ^474
3.28 Utilisation du caractère $474
4. Les classes de caractères474
5. Exemple de programme de recherche de correspondance475
6. Exemple de programme de substitution476
Chapitre 27
Les expressions régulières en Python
1. Généralités,477
2. Le module de gestion des expressions régulières478
2.1 Utilisation478
2.2 Méthode re.compile ()480
2.3 Méthode re.search ()481
2.4 Méthode re.match ()481
2.5 Méthode re.sub ()483
3. Les expressions régulières483
3.1 Utilisation du caractère483
3.2 Utilisation du caractère \484
3.3 Utilisation des caractères []485
3.4 Utilisation du caractère *485
3.5 Utilisation des caractères * ?485
3.6 Utilisation du caractère +485
3.7 Utilisation des caractères + ?485
3.8 Utilisation du caractère ?486
3.9 Utilisation des caractères ()486
3.10 Utilisation des caractères (?iLmsux)486
3.11 Utilisation des caractères ( ?...)486
3.12 Utilisation des caractères (?P<name>...)487
3.13 Utilisation des caractères (? P=name)487
3.14 Utilisation des caractères (? #...)487
3.15 Utilisation des caractères (? =...)487
3.16 Utilisation des caractères (?!...)487
3.17 Utilisation des caractères (? < =...)488
3.18 Utilisation des caractères (? < !...)488
3.19 Utilisation des caractères {}488
3.20 Utilisation du caractère |489
3.21 Utilisation du caractère ^489
3.22 Utilisation du caractère $489
Chapitre 28
Les expressions régulières en R
1. Généralités491
2. Les expressions régulières492
3. Manipulation des expressions régulières492
3.1 Recherche de chaînes492
3.1.1 Fonction grep ()492
3.1.2 Fonction grepl ()495
3.1.3 Fonction regexpr ()496
3.1.4 Fonction gregexpr ()498
3.1.5 Fonction regexec ()500
3.2 Substitution de chaînes501
3.2.1 Fonction sub ()501
3.2.2 Fonction gsub ()503
Chapitre 29
Les expressions régulières en Rust
1. Généralités505
2. Les expressions régulières506
3. Manipulation des expressions régulières508
3.1 Compilation d'expression régulière508
3.1.1 Fonction Regex::new ()508
3.1.2 Fonction RegexBuilder::new ()509
3.2 Recherche de chaînes511
3.2.1 Fonction Regex::find ()511
3.2.2 Fonction Regex::find_iter ()513
3.2.3 Fonction Regex::captures ()514
3.2.4 Fonction Regex::is_match ()515
3.3 Substitution de chaînes517
3.3.1 Fonction Regex::replace_all ()517
3.4 Découpage de chaînes518
Chapitre 30
Synthèse des types d'expressions
1. Les expressions de sélection521
1.1 Quels programmes les utilisent ?521
1.2 Les métacaractères522
1.3 Les quantificateurs522
2. Les expressions régulières basiques523
2.1 Quels programmes les utilisent ?523
2.2 Les métacaractères523
2.3 Les quantificateurs524
2.4 Les classes de caractères524
3. Les expressions régulières étendues524
3.1 Quels programmes les utilisent ?524
3.2 Les métacaractères525
3.3 Les quantificateurs525
3.4 Les classes de caractères526
4. Les expressions régulières de find526
4.1 Généralités526
4.2 Les différentes interprétations des expressions régulières527
4.2.1 emacs527
4.2.2 posix-basic528
4.2.3 posix-egrep528
4.2.4 posix-extended529
5. Les expressions régulières en Java530
Chapitre 31
Les classes de caractères POSIX
1. Généralités537
2. Les classes POSIX538
2.1 [:alpha:]538
2.2 [:lower:]538
2.3 [:upper:]538
2.4 [:alnum:]539
2.5 [:digit:]539
2.6 [:ixdigit:]539
2.7 [:space:]539
2.8 [:blank:]539
2.9 [:zpunct:]540
2.10 [:print:]540
2.11 [:graph:]540
2.12 [:cntrl:]540
Chapitre 32
Équivalences d'expressions régulières
1. Véritables équivalences d'expressions541
2. Fausses équivalences542
3. Conseils542
Chapitre 33
Outils de validation d'expressions régulières
1. Besoin de mise au point543
2. Validation des informations543
2.1 Validation des données543
2.2 Validation des expressions régulières avant utilisation544
3. Méthodes de validation des expressions545
3.1 Détermination du type d'expression régulière545
3.2 Validation d'une expression de filtrage546
3.3 Validation d'une expression régulière basique546
3.4 Validation d'une expression régulière étendue548
4. Règles de bonnes pratiques549
Chapitre 34
Expressions particulières
1. Description551
2. Expressions incluant des métacaractères552
2.1 Caractères [ et ]552
2.2 Caractères [ et -552
2.3 Caractères [ et ^553
2.4 Caractères ] et -553
2.5 Caractères ] et ^554
2.6 Caractères - et ^554
2.7 Caractères [, ] et -554
2.8 Caractères [, ] et ^555
2.9 Caractères [, - et ^555
2.10 Caractères ], - et ^556
2.11 Caractères [, ], et ^556
2.12 Caractères de A à ]556
3. Expressions excluant des métacaractères557
3.1 Caractère ]557
3.2 Caractère -557
3.3 Caractère [557
3.4 Caractère ^557
3.5 Caractères [ et ]558
3.6 Caractères [ et -558
3.7 Caractères [ et ^558
3.8 Caractères ] et -559
3.9 Caractères ] et ^559
3.10 Caractères - et ^559
3.11 Caractères [, ] et -560
3.12 Caractères [, ] et ^560
3.13 Caractères [, ], - et ^561
3.14 Caractères de A à ]561
Chapitre 35
Quelques exercices récapitulatifs
1. Introduction563
2. shell, sed, awk563
3. find, egrep, hl568
Annexes
1. Gestion des caractères français sous Linux571
1.1 Installation du paquet d'internationalisation571
1.2 Exemple d'installation571
1.3 Exemple de configuration572
1.4 Choix du jeu de caractères572
2. Sources de la commande args572
3. Sources de la commande hl573
3.1 Fichier cr_cpri.h573
3.2 Fichier cr_epri.h576
3.3 Fichier cr_gpri.c577
3.4 Fichier cr_main.c578
3.5 Fichier makefile591
Index593