Match.NextMatch Método

Definição

Devolve um novo Match objeto com os resultados da próxima partida, começando na posição em que terminou a última partida (na personagem após a última correspondência).

public:
 System::Text::RegularExpressions::Match ^ NextMatch();
public System.Text.RegularExpressions.Match NextMatch();
member this.NextMatch : unit -> System.Text.RegularExpressions.Match
Public Function NextMatch () As Match

Devoluções

A próxima correspondência de expressão regular.

Exceções

Houve um castigo.

Observações

Este método é semelhante a chamar Match(String, Int32) novamente e passar Index + Length por nova posição inicial.

Este método não modifica a instância atual. Em vez disso, devolve um novo Match objeto que contém informação sobre a próxima partida.

Tentar recuperar a próxima correspondência pode lançar um RegexMatchTimeoutException se um valor de time-out para operações de correspondência estiver em vigor e a tentativa de encontrar a próxima correspondência exceder esse intervalo de time-out.

Ao tentar corresponder um padrão de expressão regular com um correspondente vazio, o motor de expressões regulares avança um carácter na string de entrada antes de tentar novamente a correspondência, para evitar um loop infinito. Os chamadores não devem assumir que cada correspondência avançará pelo menos uma posição, uma vez que correspondências de largura zero são possíveis.

Notas para Chamadores

Quando uma tentativa de correspondência é repetida ao chamar o NextMatch() método, o motor de expressões regulares dá tratamento especial às correspondências vazias. Normalmente, NextMatch() a busca pela próxima correspondência começa exatamente onde a partida anterior terminou. No entanto, após uma partida vazia, o NextMatch() método avança uma personagem antes de tentar a próxima partida. Este comportamento garante que o motor de expressões regulares irá progredir pela cadeia. Caso contrário, como uma partida vazia não resulta em qualquer avanço, a partida seguinte começaria exatamente no mesmo local da partida anterior, e corresponderia repetidamente à mesma sequência vazia.

O exemplo a seguir fornece uma ilustração. O padrão a* de expressão regular procura zero ou mais ocorrências da letra "a" na cadeia "abaabb". Como mostra o resultado do exemplo, a pesquisa encontra seis correspondências. A primeira tentativa de correspondência encontra o primeiro "a". O segundo jogo começa exatamente onde termina o primeiro, antes do primeiro b; Não encontra ocorrências de "A" e devolve uma sequência vazia. O terceiro jogo não começa exatamente onde terminou o segundo, porque o segundo jogo devolveu um fio vazio. Em vez disso, começa um carácter depois, após o primeiro "b". A terceira correspondência encontra duas ocorrências de "a" e devolve "aa". A quarta tentativa de jogo começa onde terminou a terceira, antes do segundo "b", e devolve uma corda vazia. A quinta tentativa de correspondência avança novamente um carácter, começando antes do terceiro "b" e devolvendo uma sequência vazia. O sexto jogo começa após o último "b" e devolve novamente uma corda vazia.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = "a*";
      string input = "abaabb";
      
      Match m = Regex.Match(input, pattern);
      while (m.Success) {
         Console.WriteLine("'{0}' found at index {1}.", 
                           m.Value, m.Index);
         m = m.NextMatch();
      }
   }
}
// The example displays the following output:
//       'a' found at index 0.
//       '' found at index 1.
//       'aa' found at index 2.
//       '' found at index 4.
//       '' found at index 5.
//       '' found at index 6.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "a*"
      Dim input As String = "abaabb"
      
      Dim m As Match = Regex.Match(input, pattern)
      Do While m.Success
         Console.WriteLine("'{0}' found at index {1}.", 
                           m.Value, m.Index)
         m = m.NextMatch()
      Loop         
   End Sub
End Module
' The example displays the following output:
'       'a' found at index 0.
'       '' found at index 1.
'       'aa' found at index 2.
'       '' found at index 4.
'       '' found at index 5.
'       '' found at index 6.

Aplica-se a