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 startat
antes de , no omite la cadena antes startat
de . 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 perostartat
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 enstartat
. 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 enstartat
(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 enstartat
- 1 (nostartat
). - Cuando se especifica el
\G
delimitador en el extremo derecho de un patrón, restringe la coincidencia (primera) para que finalice exactamente enstartat
- 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.