Partilhar via


Retrocedendo

Quando as expressões regulares tem padrões correspondentes opcionais ou alternativos, o mecanismo de correspondência de expressões regulares, em algum ponto de sua avaliação de uma sequência de entrada, pode ramificar em um ou mais direções para realizar todas as correspondências possíveis.Se a correspondência não for bem-sucedida na primeira direção em que o mecanismo procura, ele deve fazer backup de sua posição na sequência de entrada para onde ocorreu a ramificação e tentar uma correspondência alternativa.

Considere, por exemplo, uma expressão regular, projetada para corresponder as dois grafias de cinza cor: cinza e cinza.O caractere de alternância | é usado para criar a expressão regular gr(a|e)y, que pode fazer a correspondência entre qualquer ortografia.Quando aplicado à sequência de entrada greengraygrowngrey, assuma que o mecanismo tenta corresponder primeiro ao gray.Ele coincide com os dois primeiros caracteres na sequência de entrada gr, em seguida, falha em e no green.Ele retrocede para r (a última bem-sucedida correspondência antes do caractere alternativo) e tenta corresponder ao grey.Falhando no segundo e, o mecanismo continua a pesquisa e basicamente corresponderá as duas palavras incorporadas gray e grey.

O exemplo de código a seguir mostra como criar esta expressão regular e aplicá-la para a sequência de entrada.

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

Consulte também

Outros recursos

Expressões Regulares do .NET Framework