Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Quando le espressioni regolari presentano criteri di corrispondenza facoltativi o alternativi, il modulo di gestione delle espressioni regolari, a un certo punto della valutazione di una stringa di input, può diramarsi in una o più direzioni per individuare tutte le corrispondenze possibili. Se non rileva alcuna corrispondenza nella prima direzione in cui esegue la ricerca, è necessario che il modulo torni alla posizione della stringa di input da cui ha avuto origine la diramazione e tenti con una corrispondenza alternativa.
Si consideri, ad esempio, un'espressione regolare progettata per individuare una delle due ortografie inglesi del colore grigio: gray e grey. Il carattere di alternanza | viene utilizzato per creare l'espressione regolare gr(a|e)y, che può corrispondere a entrambe le ortografie. Se applicato alla stringa di input greengraygrowngrey, si presuma che il modulo tenterà di effettuare prima la corrispondenza a gray. Viene trovata la corrispondenza con i primi due caratteri nella stringa di input, gr, quindi si verifica un errore in corrispondenza della e di green. Viene eseguito il backtracking a r, l'ultima corrispondenza esatta prima del carattere alternativo, e si tenta di trovare la corrispondenza con grey. Dopo che si è verificato un errore in corrispondenza della seconda e, il modulo continua la ricerca fino a trovare la corrispondenza con le due parole incorporate gray e grey.
Nell'esempio di codice che segue viene illustrato come creare questa espressione regolare e come applicarla alla stringa di input.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
' Define strings: "gray" and "grey".
Dim r As New Regex("gr(a|e)y")
Dim m As MatchCollection = r.Matches("greengraygrowngrey")
Console.WriteLine("Number of groups found: {0}", m.Count)
End Sub
End Module
' The example displays the following output:
' Number of groups found: 2
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Define strings: "gray" and "grey".
Regex r = new Regex("gr(a|e)y");
MatchCollection m = r.Matches("greengraygrowngrey");
Console.WriteLine("Number of groups found: {0}", m.Count);
}
}
// The example displays the following output:
// Number of groups found: 2