Introduction
Les expressions régulières, souvent abrégées en « regex », sont un outil indispensable pour tout développeur ou administrateur système. Elles permettent de rechercher, de remplacer et de valider du texte de manière très flexible et efficace. Que vous souhaitiez extraire des informations spécifiques d’un fichier de log, valider un format d’email ou remplacer des occurrences de texte dans un document, les expressions régulières sont là pour vous faciliter la vie.
Définition et syntaxe de base
Une expression régulière est une chaîne de caractères qui définit un motif de recherche. Elle est composée de caractères littéraux et de métacaractères qui ont une signification spéciale. Voici quelques-uns des métacaractères les plus courants :
.
(point) : correspond à n’importe quel caractère unique, sauf le retour à la ligne.*
(astérisque) : correspond à zéro ou plusieurs occurrences du caractère ou du groupe précédent.+
(plus) : correspond à une ou plusieurs occurrences du caractère ou du groupe précédent.?
(point d’interrogation) : correspond à zéro ou une occurrence du caractère ou du groupe précédent.^
(accent circonflexe) : correspond au début d’une ligne.$
(dollar) : correspond à la fin d’une ligne.[jkl]
(crochets) : correspond à n’importe quel caractère (j, k ou l) unique dans la liste entre crochets.[a-d]
(crochets) : correspond à n’importe quel caractère unique dans la liste entre crochets ( de a à d).[^]
(crochets avec accent circonflexe) : correspond à n’importe quel caractère unique qui n’est pas dans la liste entre crochets.|
(barre verticale) : correspond à l’expression avant ou après la barre.()
(parenthèses) : groupe des caractères ensemble et crée une référence à ce groupe.\w
: correspond à n’importe quel caractère alphanumérique (lettre, chiffre ou underscore).\W
: correspond à n’importe quel caractère non alphanumérique.\s
: correspond à n’importe quel caractère d’espacement (espace, tabulation, retour à la ligne).\S
: correspond à n’importe quel caractère non-espacement.\d
: correspond à n’importe quel chiffre.\D
: correspond à n’importe quel caractère non-chiffre.{n}
: correspond à exactement n occurrences du caractère ou du groupe précédent.{n,}
: correspond à au moins n occurrences du caractère ou du groupe précédent.{n,m}
: correspond à entre n et m occurrences du caractère ou du groupe précédent.\n
: correspond à un retour à la ligne.\t
: correspond à une tabulation.\r
: correspond à un retour chariot.

Au-delà de ces expressions de base, les expressions régulières peuvent devenir très complexes et spécifiques à certains cas d’utilisation. Il est important de bien comprendre les bases avant de se lancer dans des expressions plus avancées.
Exemples concrets en PowerShell, VBA et Python
Prenons une liste de noms et appliquons-y quelques expressions régulières courantes pour mieux comprendre leur fonctionnement. Voici notre liste d’exemple :
John Doe
Jane Doe
John Smith
Jane Smith
Rechercher les lignes commençant par « John »
- PowerShell :
Select-String -Pattern "^John" -Path "liste.txt"
- VBA :
RegExp.Pattern = "^John"
- Python :
re.findall(r"^John", text)
Rechercher les lignes se terminant par « Doe »
- PowerShell :
Select-String -Pattern "Doe$" -Path "liste.txt"
- VBA :
RegExp.Pattern = "Doe$"
- Python :
re.findall(r"Doe$", text)
Rechercher « John » ou « Jane »
- PowerShell :
Select-String -Pattern "John|Jane" -Path "liste.txt"
- VBA :
RegExp.Pattern = "John|Jane"
- Python :
re.findall(r"John|Jane", text)
Rechercher un prénom suivi d’un espace et d’un nom de famille
- PowerShell :
Select-String -Pattern "\w+\s\w+" -Path "liste.txt"
- VBA :
RegExp.Pattern = "\w+\s\w+"
- Python :
re.findall(r"\w+\s\w+", text)
Créer un tableau de nombres et appliquer des expressions régulières

$nombres = @("123", "456", "789", "abc")
$nombres -match "\d+"
Explication : Cette expression régulière recherche une ou plusieurs occurrences de chiffres dans chaque élément du tableau $nombres
.
$nombres = @("123", "456", "789", "abc")
$nombres -match "^\d{3}$"
Explication : Cette expression régulière recherche exactement trois chiffres du début à la fin de chaque élément du tableau $nombres
.
- VBA :
Dim nombres As Variant
nombres = Array("123", "456", "789", "abc")
Dim regex As New RegExp
regex.Pattern = "\d+"
Dim i As Integer
For i = 0 To UBound(nombres)
If regex.Test(nombres(i)) Then
Debug.Print nombres(i)
End If
Next i
Explication : Cette expression régulière recherche une ou plusieurs occurrences de chiffres dans chaque élément du tableau nombres
.
Dim nombres As Variant
nombres = Array("123", "456", "789", "abc")
Dim regex As New RegExp
regex.Pattern = "^[1-5]\d{2}$"
Dim i As Integer
For i = 0 To UBound(nombres)
If regex.Test(nombres(i)) Then
Debug.Print nombres(i)
End If
Next i
Explication : Cette expression régulière recherche les éléments du tableau nombres
qui commencent par un chiffre entre 1 et 5, suivi de deux chiffres.
- Python :
import re
nombres = ["123", "456", "789", "abc"]
[x for x in nombres if re.match(r"\d+", x)]
Explication : Cette expression régulière recherche une ou plusieurs occurrences de chiffres dans chaque élément de la liste nombres
.
import re
nombres = ["123", "456", "789", "abc"]
[x for x in nombres if re.match(r"^[02468]\d+$", x)]
Explication : Cette expression régulière recherche les éléments de la liste nombres
qui commencent par un chiffre pair (0, 2, 4, 6 ou 8), suivi d’un ou plusieurs chiffres.
Conclusion
Les expressions régulières sont un outil puissant qui peut vous faire gagner un temps précieux dans vos tâches quotidiennes de développement ou d’administration système. Bien que leur syntaxe puisse sembler intimidante au premier abord, une fois que vous en aurez compris les bases, vous ne pourrez plus vous en passer. N’hésitez pas à vous entraîner avec différents motifs et différents langages pour vous familiariser avec cet outil indispensable. Avec un peu de pratique, vous serez capable de manipuler du texte avec une facilité déconcertante !
Pour aller plus loin et comprendre l’histoire c’est ICI.
Hello.
Good cheer to all on this beautiful day!!!!!
Good luck 🙂