Méthode System.Text.RegularExpressions.Regex.Match

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

La Match(String, Int32) méthode retourne la première sous-chaîne qui correspond à un modèle d’expression régulière, en commençant à ou après la position du startat caractère, dans une chaîne d’entrée. Modèle d’expression régulière pour lequel la Match(String, Int32) méthode recherche est définie par l’appel à l’un des constructeurs de Regex classe. Pour plus d’informations sur les éléments de langage utilisés pour générer un modèle d’expression régulière, consultez Le langage d’expression régulière - Informations de référence rapides.

Paramètre startat

Vous pouvez éventuellement spécifier une position de départ dans la chaîne à l’aide du startat paramètre. Toutes les correspondances commençant avant startat dans la chaîne sont ignorées. Si vous ne spécifiez pas de position de départ, la recherche commence à la position par défaut, qui est la fin gauche d’une input recherche de gauche à droite et la fin droite d’une input recherche de droite à gauche. Malgré le début, startatl’index d’une correspondance retournée est relatif au début de la chaîne.

Bien que le moteur d’expression régulière ne retourne aucune correspondance avant startat, il n’ignore pas la chaîne avant startat. Cela signifie que les assertions telles que les ancres ou les assertions lookbehind s’appliquent toujours à l’entrée dans son ensemble. Par exemple, le code suivant inclut un modèle avec une assertion lookbehind satisfaite, même si elle se produit avant l’index startat 5 dans la chaîne d’entrée.

using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example3
    {
        public static void Main()
        {
            string input = "Zip code: 98052";
            var regex = new Regex(@"(?<=Zip code: )\d{5}");
            Match match = regex.Match(input, 5);
            if (match.Success)
                Console.WriteLine("Match found: {0}", match.Value);
        }
    }
}

// This code prints the following output:
// Match found: 98052

Conseil

  • Si un modèle commence par l’ancre ^ mais startat est supérieur à 0, aucune correspondance n’est jamais trouvée dans une recherche sur une seule ligne, car elles sont limitées par ^ le début à l’index 0.
  • L’ancre \G est satisfaite à startat. En raison de cela, si vous souhaitez restreindre une correspondance afin qu’elle commence exactement à une position de caractère particulière dans la chaîne, ancrez l’expression régulière avec une \G à gauche pour un modèle de gauche à droite. Cela limite la correspondance de sorte qu’elle doit commencer exactement à startat (ou, lorsque plusieurs correspondances sont souhaitées, de sorte que les correspondances sont contiguës).

Recherches de droite à gauche

Une recherche de droite à gauche, autrement dit, lorsque le modèle d’expression régulière est construit avec l’option RegexOptions.RightToLeft , se comporte de la manière suivante :

  • L’analyse se déplace dans la direction opposée et le modèle est mis en correspondance de l’arrière (à droite) vers l’avant (gauche).
  • La position de départ par défaut est la fin droite de la chaîne d’entrée.
  • Si startat elle est spécifiée, l’analyse de droite à gauche commence au caractère à - startat 1 (et non startat).
  • Lorsque l’ancre \G est spécifiée à la fin droite d’un modèle, elle limite la correspondance (première) à se terminer exactement à startat - 1.

Pour plus d’informations sur les recherches de droite à gauche, consultez le mode Droite à gauche.

Déterminer si une correspondance est trouvée

Vous pouvez déterminer si le modèle d’expression régulière a été trouvé dans la chaîne d’entrée en case activée la valeur de la propriété de Success l’objet retournéMatch. Si une correspondance est trouvée, la propriété de l’objet Value retourné Match contient la sous-chaîne à partir de input laquelle correspond le modèle d’expression régulière. Si aucune correspondance n’est trouvée, sa valeur est String.Empty.

Première ou plusieurs correspondances

Cette méthode retourne la première sous-chaîne trouvée à ou après la position de startat caractère correspondant input au modèle d’expression régulière. Vous pouvez récupérer les correspondances suivantes en appelant à plusieurs reprises la méthode de l’objet Match.NextMatch retournéMatch. Vous pouvez également récupérer toutes les correspondances dans un appel de méthode unique en appelant la Regex.Matches(String, Int32) méthode.

Exceptions de délai d’attente

L’exception RegexMatchTimeoutException est levée si l’heure d’exécution de l’opération correspondante dépasse l’intervalle de délai d’attente spécifié par le Regex.Regex(String, RegexOptions, TimeSpan) constructeur. Si vous ne définissez pas d’intervalle de délai d’attente lorsque vous appelez le constructeur, l’exception est levée si l’opération dépasse toute valeur de délai d’attente établie pour le domaine d’application dans lequel l’objet Regex est créé. Si aucun délai d’attente n’est défini dans l’appel du Regex constructeur ou dans les propriétés du domaine d’application, ou si la valeur de délai d’attente est , aucune exception n’est Regex.InfiniteMatchTimeoutlevée.