Match.NextMatch Método

Definición

Devuelve un nuevo Match objeto con los resultados de la siguiente coincidencia, empezando por la posición en la que finalizó la última coincidencia (en el carácter después del último carácter coincidente).

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

Devoluciones

La siguiente coincidencia de expresión regular.

Excepciones

Se agota el tiempo de espera.

Comentarios

Este método es similar a llamar Match(String, Int32) de nuevo y pasar Index + Length como la nueva posición inicial.

Este método no modifica la instancia actual. En su lugar, devuelve un nuevo Match objeto que contiene información sobre la siguiente coincidencia.

Si se intenta recuperar la siguiente coincidencia, se puede producir un RegexMatchTimeoutException valor de tiempo de espera para las operaciones coincidentes y el intento de encontrar la siguiente coincidencia supera ese intervalo de tiempo de espera.

Al intentar hacer coincidir un patrón de expresión regular con una coincidencia vacía, el motor de expresiones regulares avanzará un carácter en la cadena de entrada antes de reintentar la coincidencia para evitar un bucle infinito. Los autores de llamadas no deben suponer que cada coincidencia avanzará al menos en una posición, ya que son posibles coincidencias de ancho cero.

Notas a los autores de las llamadas

Cuando se repite un intento de coincidencia llamando al NextMatch() método , el motor de expresiones regulares proporciona un tratamiento especial de coincidencias vacías. Normalmente, NextMatch() comienza la búsqueda de la siguiente coincidencia exactamente donde se dejó la coincidencia anterior. Sin embargo, después de una coincidencia vacía, el NextMatch() método avanza por un carácter antes de intentar la siguiente coincidencia. Este comportamiento garantiza que el motor de expresiones regulares avance a través de la cadena. De lo contrario, dado que una coincidencia vacía no da lugar a ningún movimiento hacia delante, la siguiente coincidencia se iniciará exactamente en el mismo lugar que la coincidencia anterior y coincidiría con la misma cadena vacía repetidamente.

Esto se muestra en el ejemplo siguiente. El patrón a* de expresión regular busca cero o más apariciones de la letra "a" en la cadena "abaabb". Como se muestra en la salida del ejemplo, la búsqueda busca seis coincidencias. El primer intento de coincidencia busca el primer "a". La segunda coincidencia comienza exactamente donde finaliza la primera coincidencia, antes del primer b; encuentra cero apariciones de "a" y devuelve una cadena vacía. La tercera coincidencia no comienza exactamente donde finalizó la segunda coincidencia, porque la segunda coincidencia devolvió una cadena vacía. En su lugar, comienza un carácter más adelante, después del primer "b". La tercera coincidencia busca dos apariciones de "a" y devuelve "aa". El cuarto intento de coincidencia comienza donde finalizó la tercera coincidencia, antes del segundo "b" y devuelve una cadena vacía. El quinto intento de coincidencia vuelve a avanzar un carácter para que comience antes del tercer "b" y devuelva una cadena vacía. La sexta coincidencia comienza después de la última "b" y devuelve una cadena vacía de nuevo.

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.

Se aplica a