¿Cuál es la diferencia entre un grupo y una coincidencia en RegEx de .NET?

StackOverflow https://stackoverflow.com/questions/29088

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cuál es la diferencia entre un Grupo y un Fósforo en la expresión regular de .NET?

¿Fue útil?

Solución

A Fósforo es un objeto que indica una expresión regular particular que coincide con (una parte de) el texto de destino.A Grupo indica una parte de una coincidencia, si la expresión regular original contenía marcadores de grupo (básicamente un patrón entre paréntesis).Por ejemplo, con el siguiente código:

string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
Match m = r.Match(text);

m sería un objeto coincidente que contiene dos grupos: grupo 1, de (\w+), y que capturó a "Uno", y al grupo 2 (de (car)) que coincidía, bueno, con "coche".

Otros consejos

Una coincidencia es parte de una cadena que coincide con la expresión regular y, por lo tanto, podría haber varias coincidencias dentro de una cadena.

Dentro de una partida puedes definir grupos, ya sean anónimos o con nombre, para que sea más fácil dividir una partida.Un ejemplo simple es crear una expresión regular para buscar URL y luego usar grupos internos para encontrar el protocolo (http), el dominio (www.web.com), la ruta (/lol/cats.html) y los argumentos, etc.

// Example I made up on the spot, probably doesn't work very well
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])"

Se puede encontrar un solo patrón varias veces dentro de una cadena, como dije, por lo que si usa Regex.Matches (texto de cadena) obtendrá múltiples coincidencias, cada una de las cuales consta de cero, uno o más grupos.

Esos grupos con nombre se pueden encontrar indexando por número o con una cadena.El ejemplo anterior se puede utilizar así:

Match match = pattern.Match(urls);
if (!match.Success) 
    continue;
string protocol = match.Groups["protocol"].Value;
string domain = match.Groups[1].Value;

Para hacer las cosas aún más interesantes, un grupo podría coincidir varias veces, pero luego recomiendo comenzar a leer el documentación.

También puede utilizar grupos para generar referencias anteriores y realizar búsquedas y reemplazos parciales, pero lea más sobre eso en MSDN.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top