Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Regex, classe

Représente une expression régulière immuable.

System.Object
  System.Text.RegularExpressions.Regex
    En savoir plus...

Espace de noms :  System.Text.RegularExpressions
Assembly :  System (dans System.dll)
[SerializableAttribute]
public class Regex : ISerializable

Le type Regex expose les membres suivants.

  Nom Description
Méthode protégée Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Regex() Initialise une nouvelle instance de la classe Regex.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Regex(String) Initialise et compile une nouvelle instance de la classe Regex pour l'expression régulière spécifiée.
Méthode protégée Regex(SerializationInfo, StreamingContext) Initialise une nouvelle instance de la classe Regex à l'aide de données sérialisées.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Regex(String, RegexOptions) Initialise et compile une nouvelle instance de la classe Regex pour l'expression régulière spécifiée, avec des options qui modifient le modèle.
Début
  Nom Description
Propriété publique Membre statique CacheSize Obtient ou définit le nombre maximal d'entrées dans le cache statique actuel des expressions régulières compilées.
Propriété publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Options Retourne les options passées au constructeur Regex.
Propriété publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif RightToLeft Obtient une valeur indiquant si l'expression régulière cherche de droite à gauche.
Début
  Nom Description
Méthode publique Membre statique CompileToAssembly(RegexCompilationInfo[], AssemblyName) Compile un ou plusieurs objets Regex spécifiés dans un assembly nommé.
Méthode publique Membre statique CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) Compile un ou plusieurs objets Regex spécifiés dans un assembly nommé avec les attributs spécifiés.
Méthode publique Membre statique CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) Compile un ou plusieurs objets Regex spécifiés et un fichier de ressources spécifié dans un assembly nommé avec les attributs spécifiés.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Equals(Object) Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Escape Effectue l'échappement d'un jeu minimal de caractères (\, *, +, ?, |, {, [, (,), ^, $,., # et espace blanc) en remplaçant ces derniers par leur code d'échappement. Cela indique au moteur d'expressions régulières qu'il doit interpréter ces caractères de manière littérale et non comme des métacaractères.
Méthode protégée Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif GetGroupNames Retourne un tableau de noms de groupes de captures pour l'expression régulière.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif GetGroupNumbers Retourne un tableau des numéros des groupes de captures qui correspondent aux noms des groupes dans un tableau.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif GroupNameFromNumber Obtient le nom du groupe qui correspond au numéro de groupe spécifié.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif GroupNumberFromName Retourne le numéro du groupe qui correspond au nom de groupe spécifié.
Méthode protégée InitializeReferences Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif IsMatch(String) Indique si l'expression régulière spécifiée dans le constructeur Regex cherche une correspondance dans une chaîne d'entrée spécifique.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif IsMatch(String, Int32) Indique si l'expression régulière spécifiée dans le constructeur Regex cherche une correspondance dans la chaîne d'entrée spécifiée, en commençant à la position de départ définie dans la chaîne.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif IsMatch(String, String) Indique si l'expression régulière spécifiée cherche une correspondance dans la chaîne d'entrée spécifiée.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif IsMatch(String, String, RegexOptions) Indique si l'expression régulière spécifiée cherche une correspondance dans la chaîne d'entrée spécifiée, à l'aide des options de correspondance spécifiées.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Match(String) Recherche dans la chaîne d'entrée spécifiée la première occurrence de l'expression régulière spécifiée dans le constructeur Regex.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Match(String, Int32) Recherche dans la chaîne d'entrée la première occurrence d'une expression régulière, en commençant à la position de départ spécifiée dans la chaîne.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Match(String, String) Recherche dans la chaîne d'entrée spécifiée la première occurrence de l'expression régulière spécifiée.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Match(String, Int32, Int32) Recherche dans la chaîne d'entrée la première occurrence d'une expression régulière, en commençant à la position de départ spécifiée et en recherchant uniquement le nombre spécifié de caractères.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Match(String, String, RegexOptions) Recherche dans la chaîne d'entrée la première occurrence de l'expression régulière spécifiée, à l'aide des options de correspondance spécifiées.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Matches(String) Recherche dans la chaîne d'entrée spécifiée toutes les occurrences d'une expression régulière.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Matches(String, Int32) Recherche dans la chaîne d'entrée spécifiée toutes les occurrences d'une expression régulière, commençant à la position de démarrage spécifiée dans la chaîne.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Matches(String, String) Recherche dans la chaîne d'entrée spécifiée toutes les occurrences d'une expression régulière spécifique.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Matches(String, String, RegexOptions) Recherche dans la chaîne d'entrée spécifiée toutes les occurrences d'une expression régulière spécifique, à l'aide des options de correspondance spécifiées.
Méthode protégée Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String) Dans la chaîne d'entrée spécifiée, remplace toutes les chaînes qui correspondent à un modèle d'expression régulière par une chaîne de remplacement spécifique.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, MatchEvaluator) Dans la chaîne d'entrée spécifiée, remplace toutes les chaînes qui correspondent à une expression régulière spécifiée par une chaîne retournée par un délégué MatchEvaluator.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String, Int32) Dans la chaîne d'entrée spécifiée, remplace le nombre maximal spécifié de chaînes qui correspondent à un modèle d'expression régulière par une chaîne de remplacement spécifique.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String, String) Dans la chaîne d'entrée spécifiée, remplace toutes les chaînes qui correspondent à l'expression régulière spécifiée par une chaîne de remplacement spécifique.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String, MatchEvaluator) Dans la chaîne d'entrée spécifiée, remplace toutes les chaînes qui correspondent à une expression régulière spécifiée par une chaîne retournée par un délégué MatchEvaluator.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, MatchEvaluator, Int32) Dans la chaîne d'entrée spécifiée, remplace le nombre maximal spécifié de chaînes qui correspondent à un modèle d'expression régulière par une chaîne retournée par un délégué MatchEvaluator.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String, Int32, Int32) Dans la sous-chaîne d'entrée spécifiée, remplace le nombre maximal spécifié de chaînes qui correspondent à un modèle d'expression régulière par une chaîne de remplacement spécifique.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String, String, RegexOptions) Dans la chaîne d'entrée spécifiée, remplace toutes les chaînes qui correspondent à l'expression régulière spécifiée par une chaîne de remplacement spécifique. Les options spécifiées modifient l'opération correspondante.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, String, MatchEvaluator, RegexOptions) Dans la chaîne d'entrée spécifiée, remplace toutes les chaînes qui correspondent à une expression régulière spécifiée par une chaîne retournée par un délégué MatchEvaluator. Les options spécifiées modifient l'opération correspondante.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Replace(String, MatchEvaluator, Int32, Int32) Dans la sous-chaîne d'entrée spécifiée, remplace le nombre maximal spécifié de chaînes qui correspondent à un modèle d'expression régulière par une chaîne retournée par un délégué MatchEvaluator.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Split(String) Fractionne la chaîne d'entrée spécifiée aux positions définies par un modèle d'expression régulière spécifié dans le constructeur Regex.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Split(String, Int32) Fractionne la chaîne d'entrée spécifiée un nombre de fois maximal spécifié aux positions définies par une expression régulière spécifiée dans le constructeur Regex.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Split(String, String) Fractionne la chaîne d'entrée aux positions définies par un modèle d'expression régulière.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Split(String, Int32, Int32) Fractionne la chaîne d'entrée spécifiée un nombre de fois maximal spécifié aux positions définies par une expression régulière spécifiée dans le constructeur Regex. La recherche du modèle d'expression régulière débute à une position de caractère spécifiée dans la chaîne d'entrée.
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Split(String, String, RegexOptions) Fractionne la chaîne d'entrée aux positions définies par un modèle d'expression régulière spécifié. Les options spécifiées modifient l'opération correspondante.
Méthode publique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif ToString Retourne le modèle d'expression régulière qui a été passé au constructeur Regex. (Substitue Object.ToString().)
Méthode publique Membre statique Pris en charge par XNA Framework 6f7hht7k.PortableClassLibrary(fr-fr,VS.100).gif Unescape Convertit les caractères d'échappement dans la chaîne d'entrée.
Méthode protégée Pris en charge par XNA Framework UseOptionC Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Méthode protégée Pris en charge par XNA Framework UseOptionR Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Début
  Nom Description
Champ protégé Pris en charge par XNA Framework capnames Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Champ protégé Pris en charge par XNA Framework caps Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Champ protégé Pris en charge par XNA Framework capsize Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Champ protégé Pris en charge par XNA Framework capslist Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Champ protégé factory Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Champ protégé Pris en charge par XNA Framework pattern Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Champ protégé Pris en charge par XNA Framework roptions Infrastructure. Utilisé par un objet Regex généré par la méthode CompileToAssembly.
Début
  Nom Description
Implémentation d'interface explicite Méthode privée ISerializable.GetObjectData Infrastructure. Remplit un objet SerializationInfo avec les données nécessaires pour désérialiser l'objet Regex actuel.
Début

La classe Regex représente le moteur des expressions régulières du .NET Framework. Il est possible de l'utiliser pour analyser rapidement des volumes importants de texte pour rechercher des modèles de caractères spécifiques dans le but d'extraire, de modifier, de remplacer ou de supprimer des sous-chaînes de texte, ou encore d'ajouter les chaînes extraites à une collection afin de générer un rapport.

Remarque Remarque

Si votre intérêt principal est de valider une chaîne en déterminant si elle se conforme à un modèle particulier, vous pouvez utiliser la classe System.Configuration.RegexStringValidator.

Pour utiliser des expressions régulières, vous définissez le modèle que vous souhaitez identifier dans un flux de texte à l'aide de la syntaxe documentée dans Éléments du langage des expressions régulières. Ensuite, vous pouvez éventuellement instancier un objet Regex. Enfin, vous pouvez exécuter certaines opérations, telles que remplacer du texte qui correspond au modèle d'expression régulière, ou identifier une correspondance de modèle.

Regex etMéthodes de chaîne

La classe System.String inclut plusieurs méthodes de comparaison et recherche que vous pouvez utiliser pour exécuter les critères spéciaux avec le texte. Par exemple, les méthodes String.Contains, String.EndsWith et String.StartsWith déterminent si une instance de chaîne contient une sous-chaîne spécifiée ; et les méthodes String.IndexOf, String.IndexOfAny, String.LastIndexOf et String.LastIndexOfAny retournent la position de départ d'une sous-chaîne spécifiée dans une chaîne. Utilisez les méthodes de la classe System.String lorsque vous recherchez une chaîne spécifique. Utilisez la classe Regex lorsque vous recherchez un modèle spécifique dans une chaîne. Pour plus d'informations et d'exemples, consultez Expressions régulières du .NET Framework.

Statique etMéthodes d'instance

Après avoir défini un modèle d'expression régulière, vous pouvez le fournir au moteur des expressions régulières de deux façons.

  • En instanciant un objet Regex qui représente l'expression régulière. Pour ce faire, vous devez passer le modèle d'expression régulière à un constructeur Regex. Un objet Regex est immuable ; lorsque vous instanciez un objet Regex avec une expression régulière, l'expression régulière de cet objet ne peut pas être modifiée.

  • En fournissant à la fois l'expression régulière et le texte à rechercher à une méthode Regexstatic (Shared en Visual Basic). Cela vous permet d'utiliser une expression régulière sans créer explicitement un objet Regex.

Toutes les méthodes d'identification de modèle Regex incluent des surcharges statiques et d'instance à la fois.

Le moteur des expressions régulières doit compiler un modèle particulier pour que celui-ci puisse être utilisé. Étant donné que les objets Regex sont immuables, c'est une procédure unique qui se produit lorsqu'un constructeur de classe Regex ou une méthode statique est appelé. Pour éviter de compiler une expression régulière unique à plusieurs reprises, le moteur des expressions régulières met en cache les expressions régulières compilées utilisées dans les appels de méthode statique. En conséquence, les méthodes utilisant des critères spéciaux d'expression régulière offrent une performance comparable aux méthodes statique et d'instance.

Remarque importante Important

Dans le .NET Framework versions 1.0 et 1.1, toutes les expressions régulières compilées ont été mises en cache, qu'elles aient été utilisées en appels de méthode statique ou d'instance. À partir du .NET Framework 2.0, seules les expressions régulières utilisées dans les appels de méthode statique sont mises en cache.

Toutefois, le système de la mise en cache implémenté par le moteur des expressions régulières peut affecter de façon défavorable la performance dans les deux cas suivants :

  • Lorsque vous utilisez des appels de méthode statique avec un grand nombre d'expressions régulières. Par défaut, le moteur des expressions régulières met en cache les 15 dernières expressions régulières statiques. Si votre application utilise plus de 15 expressions régulières statiques, certaines expressions régulières doivent être recompilées. Pour empêcher cette recompilation, vous pouvez augmenter la propriété Regex.CacheSize à une valeur appropriée.

  • Lorsque votre application instancie de nouveaux objets Regex avec les expressions régulières compilées précédemment. Par exemple, le code suivant définit une expression régulière pour trouver des mots dupliqués dans les lignes individuelles d'un flux de texte. Bien que l'exemple utilise une expression régulière unique, il instancie un nouvel objet Regex pour traiter chaque ligne de texte. Cela provoque la recompilation de l'expression régulière avec chaque itération de la boucle.

    
    StreamReader sr = new StreamReader(filename);
    string input;
    string pattern = @"\b(\w+)\s\1\b";
    while (sr.Peek() >= 0)
    {
       input = sr.ReadLine();
       Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
       MatchCollection matches = rgx.Matches(input);
       if (matches.Count > 0)
       {
          Console.WriteLine("{0} ({1} matches):", input, matches.Count);
          foreach (Match match in matches)
             Console.WriteLine("   " + match.Value);
       }
    }
    sr.Close();   
    
    
    

    Pour empêcher la recompilation, l'application doit instancier un objet Regex unique qui est accessible à tout le code qui le requiert, comme indiqué dans l'exemple réécrit suivant.

    
    StreamReader sr = new StreamReader(filename);
    string input;
    string pattern = @"\b(\w+)\s\1\b";
    Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
    
    while (sr.Peek() >= 0)
    {
       input = sr.ReadLine();
       MatchCollection matches = rgx.Matches(input);
       if (matches.Count > 0)
       {
          Console.WriteLine("{0} ({1} matches):", input, matches.Count);
          foreach (Match match in matches)
             Console.WriteLine("   " + match.Value);
       }
    }
    sr.Close();   
    
    
    

Exécution d'opérations d'expression régulière

Si vous décidez d'instancier un objet Regex et d'appeler ses méthodes ou des méthodes statiques, la classe Regex offre les fonctionnalités de critères spéciaux suivantes :

  • Validation d'une correspondance. Vous appelez la méthode IsMatch pour déterminer si une correspondance est présente.

  • Récupération d'une correspondance unique. Vous appelez la méthode Match pour récupérer un objet Match qui représente la première correspondance dans une chaîne ou dans une partie d'une chaîne. Les correspondances suivantes peuvent être récupérées en appelant la méthode Match.NextMatch.

  • Récupération de toutes les correspondances. Vous appelez la méthode Matches pour récupérer un objet System.Text.RegularExpressions.MatchCollection qui représente toutes les correspondances trouvées dans une chaîne ou dans une partie d'une chaîne.

  • Remplacement de texte correspondant. Vous appelez la méthode Replace pour remplacer le texte correspondant. Le texte de remplacement peut également être défini par une expression régulière. De plus, quelques-unes des méthodes Replace incluent un paramètre MatchEvaluator qui vous permet de définir par programmation le texte de remplacement.

  • Création d'un tableau de chaînes formé de parties d'une chaîne d'entrée. Vous appelez la méthode Split pour fractionner une chaîne d'entrée aux positions définies par l'expression régulière.

En plus de ses méthodes utilisant des critères spéciaux, la classe Regex inclut plusieurs méthodes à usage déterminé :

  • La méthode Escape échappe tous les caractères qui peuvent être interprétés comme opérateurs d'expression régulière dans une expression régulière ou une chaîne d'entrée.

  • La méthode Unescape supprime ces caractères d'échappement.

  • La méthode CompileToAssembly crée un assembly qui contient des expressions régulières prédéfinies. Le .NET Framework contient des exemples de ces assemblys à objectifs spécifiques dans l'espace de noms System.Web.RegularExpressions.

L'exemple de code suivant utilise une expression régulière pour vérifier les occurrences répétées de mots dans une chaîne. L'expression régulière \b(?<word>\w+)\s+(\k<word>)\b peut être interprétée comme illustré dans le tableau suivant.

Modèle

Description

\b

Démarre la correspondance à la limite d'un mot.

(?<word>\w+)

Met en correspondance un ou plusieurs caractères du mot jusqu'à la limite d'un mot. Nomme ce groupe capturé word.

\s+

Met en correspondance un ou plusieurs espaces blancs.

(\k<word>)

Met en correspondance le groupe capturé nommé word.

\b

Mettre en correspondance la limite d'un mot.


using System;
using System.Text.RegularExpressions;

public class Test
{

    public static void Main ()
    {

        // Define a regular expression for repeated words.
        Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled | RegexOptions.IgnoreCase);

        // Define a test string.        
        string text = "The the quick brown fox  fox jumped over the lazy dog dog.";

        // Find matches.
        MatchCollection matches = rx.Matches(text);

        // Report the number of matches found.
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // Report on each match.
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}",  
                              groups["word"].Value, 
                              groups[0].Index, 
                              groups[1].Index);
        }

    }
	
}
// The example produces the following output to the console:
//       3 matches found in:
//          The the quick brown fox  fox jumped over the lazy dog dog.
//       'The' repeated at positions 0 and 4
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54


L'exemple de code suivant illustre l'utilisation d'une expression régulière pour vérifier si une chaîne représente une valeur monétaire ou a le format correct pour représenter une valeur monétaire. Dans ce cas, l'expression régulière est construite dynamiquement à partir des propriétés NumberFormatInfo.CurrencyDecimalSeparator, CurrencyDecimalDigits, NumberFormatInfo.CurrencySymbol, NumberFormatInfo.NegativeSign et NumberFormatInfo.PositiveSign pour la culture actuelle de l'utilisateur. Si la culture actuelle du système est en-US, l'expression régulière résultante est ^\s*[\+-]?\s?\$?\s?(\d*\.?\d{2}?){1}$. Cette expression régulière peut être interprétée comme illustré dans le tableau suivant.

Modèle

Description

^

Démarre au début de la chaîne.

\s*

Correspond à zéro, un ou plusieurs espaces blancs.

[\+-]?

Met en correspondance zéro ou une occurrence d'un signe positif ou négatif.

\s?

Met en correspondance zéro ou un espace blanc.

\$?

Met en correspondance zéro ou une occurrence du signe dollar.

\s?

Met en correspondance zéro ou un espace blanc.

\d*

Met en correspondance zéro ou plusieurs chiffres décimaux.

\.?

Met en correspondance zéro ou un symbole de virgule décimale.

\d{2}?

Correspond zéro ou une fois à deux chiffres décimaux.

(\d*\.? \d{2}?){1}

Met en correspondance le modèle de chiffres intégraux et fractionnaires séparés par un symbole de virgule décimale au moins une fois.

$

Faire correspondre la fin de la chaîne.

Dans ce cas, l'expression régulière suppose qu'une chaîne de devise valide ne contient pas de symboles de séparateur de groupes et qu'elle n'a pas de chiffres fractionnaires ou qu'elle n'a pas le nombre de chiffres fractionnaires défini par la propriété CurrencyDecimalDigits de la culture actuelle.


using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      // Get the current NumberFormatInfo object to build the regular 
      // expression pattern dynamically.
      NumberFormatInfo nfi = NumberFormatInfo.CurrentInfo;

      // Define the regular expression pattern.
      string pattern; 
      pattern = @"^\s*[";
      // Get the positive and negative sign symbols.
      pattern += Regex.Escape(nfi.PositiveSign + nfi.NegativeSign) + @"]?\s?";
      // Get the currency symbol.
      pattern += Regex.Escape(nfi.CurrencySymbol) + @"?\s?";
      // Add integral digits to the pattern.
      pattern += @"(\d*";
      // Add the decimal separator.
      pattern += Regex.Escape(nfi.CurrencyDecimalSeparator) + "?";
      // Add the fractional digits.
      pattern += @"\d{";
      // Determine the number of fractional digits in currency values.
      pattern += nfi.CurrencyDecimalDigits.ToString() + "}?){1}$";

      Regex rgx = new Regex(pattern);

      // Define some test strings.
      string[] tests = { "-42", "19.99", "0.001", "100 USD", 
                         ".34", "0.34", "1,052.21", "$10.62", 
                         "+1.43", "-$0.23" };

      // Check each test string against the regular expression.
      foreach (string test in tests)
      {
         if (rgx.IsMatch(test))
            Console.WriteLine("{0} is a currency value.", test);
         else
            Console.WriteLine("{0} is not a currency value.", test);
      }
   }
}
// The example displays the following output:
//       -42 is a currency value.
//       19.99 is a currency value.
//       0.001 is not a currency value.
//       100 USD is not a currency value.
//       .34 is a currency value.
//       0.34 is a currency value.
//       1,052.21 is not a currency value.
//       $10.62 is a currency value.
//       +1.43 is a currency value.
//       -$0.23 is a currency value.


Étant donné que l'expression régulière dans cet exemple est construite dynamiquement, nous ne savons pas au moment de la conception si le symbole monétaire de la culture actuelle, le signe décimal ou les signes positif et négatif peuvent être mal interprétés par le moteur des expressions régulières comme opérateurs du langage de l'expression régulière. Pour empêcher toute mauvaise interprétation, l'exemple passe chaque chaîne générée dynamiquement à la méthode Escape.

.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

La classe Regex est thread-safe et immuable (en lecture seule). Les objets Regex peuvent être créés sur tout thread et partagés entre les threads. Pour plus d'informations, consultez Sécurité des threads.

Date

Historique

Motif

Juin 2010

Le modèle d'expression régulière destiné à gérer l'espace blanc a été corrigé.

Commentaires client.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,