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, startat
l’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
^
maisstartat
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 nonstartat
). - 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.