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 : en pratique



Les expressions régulières (regex) sont un outil puissant pour rechercher, valider et remplacer du texte selon un motif. En C# (.NET), elles sont implémentées via la classe System.Text.RegularExpressions.Regex. Dans cet article, nous explorerons les principales fonctionnalités avec des exemples concrets : de la simple validation d'email à l'extraction de données depuis du HTML. Tous les exemples sont prêts à être copiés et utilisés dans vos projets.



Fondamentaux de Regex en C#



La classe Regex propose trois méthodes clés :

  • IsMatch — vérifie si la chaîne correspond au motif ;
  • Match — trouve la première correspondance ;
  • Matches — trouve toutes les correspondances.


Un exemple simple — vérifier si la chaîne contient des chiffres :



using System;using System.Text.RegularExpressions;

public class RegexExample{ public static void Main() { string text = "Mon numéro : 12345"; string pattern = @"\\d+"; // un ou plusieurs chiffres

bool hasDigits = Regex.IsMatch(text, pattern); Console.WriteLine(hasDigits); // True }}


Notez le @ avant la chaîne — c'est un littéral de chaîne verbatim, qui désactive l'échappement de la barre oblique inverse. Sans lui, il faudrait écrire "\\\\d+".



Validation d'email et de numéro de téléphone



Validation d'email

La validation d'email est une tâche classique. Un motif simple mais fonctionnel :



public static bool IsValidEmail(string email){    string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";    return Regex.IsMatch(email, pattern);}

// UtilisationConsole.WriteLine(IsValidEmail("user@example.com")); // TrueConsole.WriteLine(IsValidEmail("user@.com")); // False


Décortiquons le motif :

  • ^ — début de la chaîne ;
  • [a-zA-Z0-9._%+-]+ — partie locale (lettres, chiffres et caractères spéciaux) ;
  • @ — symbole "arobase" ;
  • [a-zA-Z0-9.-]+ — domaine ;
  • \\. — point (échappé) ;
  • [a-zA-Z]{2,} — zone de domaine (au moins 2 lettres) ;
  • $ — fin de la chaîne.


Validation de numéro de téléphone

Exemple pour le format russe (+7 XXX XXX-XX-XX) :



public static bool IsValidRussianPhone(string phone){    string pattern = @"^\\+7\\d{3}\\d{3}-\\d{2}-\\d{2}$";    // Ou une variante plus flexible :    // @"^\\+7[\\s-]?\\d{3}[\\s-]?\\d{3}[\\s-]?\\d{2}[\\s-]?\\d{2}$"    return Regex.IsMatch(phone, pattern);}


Extraction de données d'un texte à l'aide de groupes de capture



Les groupes de capture (parenthèses ()) permettent d'extraire des parties de la correspondance. Par exemple, extrayons tous les emails d'un texte :



string text = "Contacts : support@site.com, admin@test.org, info@company.net";string pattern = @"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,})";

MatchCollection matches = Regex.Matches(text, pattern);foreach (Match match in matches){ Console.WriteLine($"Email complet : {match.Value}"); Console.WriteLine($"Partie locale : {match.Groups[1].Value}"); Console.WriteLine($"Domaine : {match.Groups[2].Value}"); Console.WriteLine($"Zone : {match.Groups[3].Value}"); Console.WriteLine("---");}


Résultat :

Email complet : support@site.comPartie locale : supportDomaine : siteZone : com---


Les groupes sont numérotés à partir de 1 (le groupe 0 correspond à l'ensemble de la correspondance). On peut leur donner des noms :



string pattern = @"(?<user>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+)\\.(?<tld>[a-zA-Z]{2,})";// Accès : match.Groups["user"].Value


Extraction de liens depuis du HTML



string html = @"<a href='https://example.com'>Examp                

Blogs

Book Recommendations