Sommaire: Utilisation des expressions régulières en dot Net
Avant-propos
1 – Les expressions régulières
1.1 – Leur utilisation
1.2 – Leur syntaxe
1.3 – Exemples
2 – Les expressions régulières et .Net
2.1 – Utilisation en .Net
2.2 – Validation d’une chaîne
2.3 – Remplacement dans une chaîne
2.4 – Découpage dans une chaîne
2.4.1 – Découpage par séparateur
2.4.2 – Découpage par regroupement
Conclusion
Liens
Extrait du cours
Avant-propos
Les expressions régulières (également appelées Regex ou Regexp) sont une traduction contre versée de « regular expressions » que les puristes appeler ont les expressions rationnelles. Par la suite, nous utiliserons donc le terme « Regex » afin de rester neutre 🙂
1 – Les expressions régulières
1.1 – Leur utilisation
Les Regex sont un outil (ou plutôt un système) très puissant permettant de vérifier la syntaxe d’une chaîne de caractères. Plus précisément, c’est vérifier que la chaîne de caractères à examiner respecte un motif ou une série de motifs (notre Regex) désignant la syntaxe attendue de la phrase.
Les Regex sont utilisées pour trois grands types d’action :
– Vérifier la syntaxe(forme) d’une chaîne de caractères (ex : adresse ip de forme chiffre.chiffre.chiffre.chiffre)
– Remplacer une partie de la chaîne (token) par un élément spécifique
– Découper une chaîne de caractères
1.2 – Leur syntaxe
Les Regex sont donc une suite de motifs qui se composent de métacaractères, de classes sous .NET et d’alias.
Voici tout d’abord, une série de métacaractères pouvant être utilisés et ayant chacun une correspondance bien précise.
Ces métacaractères nous permettent donc de faire des combinaisons infinies pouvant correspondre à tous les besoins. Néanmoins, pour vérifier des chaînes de caractères de taille importante, l’écriture de ces métacaractères peut être fastidieuse, en plus du fait que la chaine Regex n’est pas très lisible pour le developpeur. Heureusement, il existe une série d’alias permettant de faciliter cette tâche..
1.3 – Exemples
Comme rien n’est plus parlant qu’un exemple concret, en voici quelque-uns qui démontrent à quel point les chaînes Regex peuvent être simples…
ou complexes 🙂
Chaîne qui contient des lettres de a à d : [a-d] ou [abcd]
Chaîne qui contient des lettres de a à d ou n’importe quelles lettres majuscules : [a-dA-Z]
Chaîne commençant (et finissant) par y ou z : ^(y | z)$
Chaîne ne contenant pas de chiffre : [^0-9]
Chaîne contenant les chiffres 1 ou 2 ou le symbole ^ : [12\^]
On peut utiliser plusieurs métacaractères :
^[pP]hara(onix)?$ : phara, Phara, pharaonix ou Pharaonix
Ou tout simplement vérifier la validité d’une adresse ip :
^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$
Note: Cette ligne de validation semble complexe mais dans une application, elle est la seule alternative à une suite énorme de substring() et comparaisons via les méthodes traditionnelles.
2 – Les expressions régulières et .Net
Les Regex s’utilisent énormément sous UNIX avec PERL mais également dans les langages web comme le PHP.
Même si la syntaxe de base est identique, l’utilisation de celle-ci diffère un peu pour chaque langage, notamment les méthodes qui sont différentes. Ainsi, nous ne verrons pas ici les fonctions POSIX comme ereg( ), mais nous nous intéresserons uniquement aux méthodes propres aux langages .NET.
2.1 – Utilisation en .Net
Les Regex nécessitent l’utilisation de l’espace de noms:
System.Text.RegularExpressions using System.Text.RegularExpressions;
En .Net, les Regex sont à indiquer entre guillemets, si celles-ci comprennent des antislashs ( » \ « ), il faut alors les doubler. Néanmoins, il existe une astuce utile ici, qui consiste à placer le symbole @ avant les guillemets.
Ainsi : @ »^[\t]$ » est équivalent à « ^[\\t]$ »
De plus, pour faciliter la vérification de vos Regex, je mets à disposition un petit programme qui permettra également de vérifier la validité des exemples que nous verrons par la suite. RegexMaker (32ko) Miroir..
……….