Expressions régulières en C# avec exemples : en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Expressions régulières en C# avec exemples : de la théorie à la pratique

\n\n

Les expressions régulières (regex) sont un outil puissant pour rechercher, extraire et remplacer du texte selon un modèle. En C# (.NET), le travail avec les regex est implémenté via l'espace de noms System.Text.RegularExpressions et la classe Regex. Dans cet article, nous allons explorer les principales fonctionnalités avec des exemples concrets : de la simple recherche à la validation d'email et de téléphone.

\n\n

1. Bases : la classe Regex et ses méthodes

\n\n

La classe principale pour travailler est Regex. Elle fournit des méthodes statiques et d'instance. Voici les principales :

\n\n
    \n
  • IsMatch — vérifie si la chaîne contient une correspondance avec le modèle.
  • \n
  • Match — trouve la première correspondance.
  • \n
  • Matches — trouve toutes les correspondances.
  • \n
  • Replace — remplace les correspondances par la chaîne spécifiée.
  • \n
  • Split — divise la chaîne selon le modèle.
  • \n
\n\n

Exemple 1. Vérification simple

\n
using System;\nusing System.Text.RegularExpressions;\n\nclass Program\n{\n    static void Main()\n    {\n        string text = "Bonjour, mon numéro : 123-456-7890";\n        string pattern = @"\\d{3}-\\d{3}-\\d{4}";\n\n        if (Regex.IsMatch(text, pattern))\n        {\n            Console.WriteLine("Numéro trouvé !");\n        }\n    }\n}\n
\n\n

Dans cet exemple, \\d{3} signifie « exactement trois chiffres ». L'antislash est échappé avec @ (chaîne verbatim).

\n\n

2. Groupes de capture et extraction de données

\n\n

Les groupes de capture permettent d'extraire des parties de la correspondance. Ils sont définis par des parenthèses (). Chaque groupe reçoit un numéro d'ordre (commençant à 1).

\n\n

Exemple 2. Extraction du nom et du domaine d'un email

\n
string email = "user@example.com";\nstring pattern = @"^(\\w+)@(\\w+\\.\\w+)$";\n\nMatch match = Regex.Match(email, pattern);\n\nif (match.Success)\n{\n    Console.WriteLine($"Identifiant : {match.Groups[1].Value}");   // user\n    Console.WriteLine($"Domaine : {match.Groups[2].Value}");   // example.com\n}\n
\n\n

Ici, (\\w+) capture un ou plusieurs caractères alphanumériques. ^ et $ sont les ancres de début et de fin de chaîne.

\n\n

Exemple 3. Analyse d'URL

\n
string url = "https://pythonlib.ru/page?id=42";\nstring pattern = @"^(https?)://([^/]+)(/.*)?$";\n\nMatch m = Regex.Match(url, pattern);\nif (m.Success)\n{\n    Console.WriteLine($"Protocole : {m.Groups[1].Value}"); // https\n    Console.WriteLine($"Domaine : {m.Groups[2].Value}");    // pythonlib.ru\n    Console.WriteLine($"Chemin : {m.Groups[3].Value}");     // /page?id=42\n}\n
\n\n

3. Remplacement et suppression de texte

\n\n

La méthode Replace permet de remplacer les fragments trouvés. On peut utiliser des références arrière comme $1, $2 pour insérer des groupes.

\n\n

Exemple 4. Formatage d'un numéro de téléphone

\n
string raw = "89161234567";\nstring pattern = @"(\\d{1})(\\d{3})(\\d{3})(\\d{2})(\\d{2})";\nstring replacement = "+7 ($2) $3-$4-$5";\n\nstring formatted = Regex.Replace(raw, pattern, replacement);\nConsole.WriteLine(formatted); // +7 (916) 123-45-67\n
\n\n

Exemple 5. Suppression des espaces superflus

\n
string text = "Ceci    est   un   texte   avec    des   espaces   superflus.";\nstring cleaned = Regex.Replace(text, @"\\s+", " ");\nConsole.WriteLine(cleaned); // "Ceci est un texte avec des espaces superflus."\n
\n\n

\\s+ — un ou plusieurs caractères d'espacement. On remplace par un espace simple.

\n\n

4. Cas concrets : validation d'email et de téléphone

\n\n

En pratique, les regex sont le plus souvent utilisées pour valider les saisies utilisateur. Voici deux exemples typiques.

\n\n

Validation d'email (simplifiée)

\n
public static bool IsValidEmail(string email)\n{\n    if (string.IsNullOrWhiteSpace(email))\n        return false;\                

Blogs

Book Recommendations