Método System.Text.RegularExpressions.Regex.Match

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

El Match(String, Int32) método devuelve la primera subcadena que coincide con un patrón de expresión regular, empezando por o después de la posición del startat carácter, en una cadena de entrada. Patrón de expresión regular para el que el Match(String, Int32) método busca se define mediante la llamada a uno de los constructores de clase Regex . Para obtener información sobre los elementos de lenguaje que se usan para crear un patrón de expresión regular, vea Lenguaje de expresiones regulares: referencia rápida.

Parámetro startat

Opcionalmente, puede especificar una posición inicial en la cadena mediante el startat parámetro . Se omiten las coincidencias que comiencen antes startat en la cadena. Si no especifica una posición inicial, la búsqueda comienza en la posición predeterminada, que es el extremo izquierdo de input en una búsqueda de izquierda a derecha y el extremo derecho de input en una búsqueda de derecha a izquierda. A pesar de comenzar en startat, el índice de cualquier coincidencia devuelta es relativo al inicio de la cadena.

Aunque el motor de expresiones regulares no devuelve ninguna coincidencia a partir de startatantes de , no omite la cadena antes startatde . Esto significa que las aserciones como delimitadores o aserciones de lookbehind se siguen aplicando a la entrada como un todo. Por ejemplo, el código siguiente incluye un patrón con una aserción de lookbehind que se cumple aunque se produzca antes del startat índice de 5 en la cadena de entrada.

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

Sugerencia

  • Si un patrón comienza con el ^ delimitador pero startat es mayor que 0, nunca se encontrará ninguna coincidencia en una búsqueda de una sola línea, ya que están restringidas por ^ para empezar en el índice 0.
  • El \G delimitador se satisface en startat. Por este motivo, si desea restringir una coincidencia para que comience exactamente en una posición de carácter determinada de la cadena, delimite la expresión regular con un elemento \G a la izquierda para un patrón de izquierda a derecha. Esto restringe la coincidencia para que se inicie exactamente en startat (o, cuando se desean varias coincidencias, por lo que las coincidencias son contiguas).

Búsquedas de derecha a izquierda

Una búsqueda de derecha a izquierda, es decir, cuando el patrón de expresión regular se construye con la RegexOptions.RightToLeft opción , se comporta de las siguientes maneras:

  • El examen se mueve en la dirección opuesta y el patrón coincide de atrás (derecha) a delante (izquierda).
  • La posición inicial predeterminada es el extremo derecho de la cadena de entrada.
  • Si startat se especifica , el examen de derecha a izquierda comienza en el carácter en startat - 1 (no startat).
  • Cuando se especifica el \G delimitador en el extremo derecho de un patrón, restringe la coincidencia (primera) para que finalice exactamente en startat - 1.

Para obtener más información sobre las búsquedas de derecha a izquierda, vea Modo de derecha a izquierda.

Determinar si se encuentra una coincidencia

Puede determinar si el patrón de expresión regular se ha encontrado en la cadena de entrada comprobando el valor de la propiedad del Success objeto devueltoMatch. Si se encuentra una coincidencia, la propiedad del Value objeto devuelto Match contiene la subcadena de input que coincide con el patrón de expresión regular. Si no se encuentra ninguna coincidencia, su valor es String.Empty.

Primera o varias coincidencias

Este método devuelve la primera subcadena encontrada en o después de la posición del startat carácter en input que coincide con el patrón de expresión regular. Puede recuperar coincidencias posteriores llamando repetidamente al método del Match.NextMatch objeto devueltoMatch. También puede recuperar todas las coincidencias en una sola llamada al Regex.Matches(String, Int32) método .

Excepciones de tiempo de espera

La RegexMatchTimeoutException excepción se produce si el tiempo de ejecución de la operación coincidente supera el intervalo de tiempo de espera especificado por el Regex.Regex(String, RegexOptions, TimeSpan) constructor. Si no establece un intervalo de tiempo de espera al llamar al constructor, se produce la excepción si la operación supera cualquier valor de tiempo de espera establecido para el dominio de aplicación en el que se crea el Regex objeto. Si no se define ningún tiempo de espera en la llamada del Regex constructor o en las propiedades del dominio de aplicación, o si el valor de tiempo de espera es Regex.InfiniteMatchTimeout, no se produce ninguna excepción.