Metodo System.Text.RegularExpressions.Regex.Match

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

Il Match(String, Int32) metodo restituisce la prima sottostringa che corrisponde a un criterio di espressione regolare, a partire da o dopo la posizione del startat carattere, in una stringa di input. Modello di espressione regolare per il quale il Match(String, Int32) metodo cerca è definito dalla chiamata a uno dei costruttori della Regex classe. Per informazioni sugli elementi del linguaggio usati per creare un modello di espressione regolare, vedere Linguaggio di espressioni regolari - Riferimento rapido.

Parametro startat

Facoltativamente, è possibile specificare una posizione iniziale nella stringa usando il startat parametro . Tutte le corrispondenze che iniziano prima startat nella stringa vengono ignorate. Se non si specifica una posizione iniziale, la ricerca inizia nella posizione predefinita, ovvero l'estremità sinistra di input in una ricerca da sinistra a destra e l'estremità destra di input in una ricerca da destra a sinistra. Nonostante l'inizio di startat, l'indice di qualsiasi corrispondenza restituita è relativo all'inizio della stringa.

Anche se il motore delle espressioni regolari non restituisce alcuna corrispondenza a partire da startat, non ignora la stringa prima startatdi . Ciò significa che le asserzioni, ad esempio ancoraggi o asserzioni lookbehind, si applicano comunque all'input nel suo complesso. Ad esempio, il codice seguente include un criterio con un'asserzione lookbehind soddisfatta anche se si verifica prima dell'indice startat di 5 nella stringa di input.

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

Suggerimento

  • Se un criterio inizia con l'ancoraggio ^ ma startat è maggiore di 0, nessuna corrispondenza verrà trovata in una ricerca a riga singola perché è vincolata dall'inizio ^ all'indice 0.
  • L'ancoraggio \G è soddisfatto in startat. Per questo motivo, se si desidera limitare una corrispondenza in modo che inizi esattamente in corrispondenza di una determinata posizione di carattere nella stringa, ancorare l'espressione regolare con un elemento \G a sinistra per un criterio da sinistra a destra. Ciò limita la corrispondenza in modo che inizi esattamente a startat (o, quando si desiderano più corrispondenze, in modo che le corrispondenze siano contigue).

Ricerche da destra a sinistra

Una ricerca da destra a sinistra, ovvero quando il criterio di espressione regolare viene costruito con l'opzione RegexOptions.RightToLeft , si comporta nei modi seguenti:

  • L'analisi si sposta nella direzione opposta e il modello viene confrontato da indietro (a destra) verso il lato anteriore (sinistro).
  • La posizione iniziale predefinita è la fine destra della stringa di input.
  • Se startat viene specificato, l'analisi da destra a sinistra inizia con il carattere in corrispondenza di startat - 1 (non startat).
  • Quando l'ancoraggio \G viene specificato alla fine destra di un criterio, limita la corrispondenza (prima) alla fine esatta di startat - 1.

Per altre informazioni sulle ricerche da destra a sinistra, vedere Modalità da destra a sinistra.

Determinare se viene trovata una corrispondenza

È possibile determinare se il criterio di espressione regolare è stato trovato nella stringa di input controllando il valore della proprietà dell'oggetto Success restituitoMatch. Se viene trovata una corrispondenza, la proprietà dell'oggetto Value restituito Match contiene la sottostringa da input che corrisponde al criterio di espressione regolare. Se non viene trovata alcuna corrispondenza, il relativo valore è String.Empty.

Prima o più corrispondenze

Questo metodo restituisce la prima sottostringa trovata in corrispondenza o dopo la posizione del startat carattere in input che corrisponde al criterio di espressione regolare. È possibile recuperare le corrispondenze successive chiamando ripetutamente il metodo dell'oggetto Match.NextMatch restituitoMatch. È anche possibile recuperare tutte le corrispondenze in una singola chiamata al metodo chiamando il Regex.Matches(String, Int32) metodo .

Eccezioni di timeout

L'eccezione RegexMatchTimeoutException viene generata se il tempo di esecuzione dell'operazione corrispondente supera l'intervallo di timeout specificato dal Regex.Regex(String, RegexOptions, TimeSpan) costruttore. Se non si imposta un intervallo di timeout quando si chiama il costruttore, l'eccezione viene generata se l'operazione supera qualsiasi valore di timeout stabilito per il dominio applicazione in cui viene creato l'oggetto Regex . Se non viene definito alcun timeout nella chiamata al Regex costruttore o nelle proprietà del dominio applicazione o se il valore di timeout è Regex.InfiniteMatchTimeout, non viene generata alcuna eccezione.