¿Cuál es la diferencia entre Group y Match en el RegEx de .NET?¿Cuál es la diferencia entre un grupo y una coincidencia en el RegEx de .NET?
Respuesta
A Match es un objeto que indica una expresión regular particular emparejada (una parte de) el texto de destino. Un Group 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 objeto partido que contiene dos grupos - grupo 1, a partir de (\w+)
, y que capturado "One", y el grupo 2 (de (car)
) que corresponde, así, "coche".
Una coincidencia es una 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 coincidencia puede definir grupos, anónimos o con nombre, para que sea más fácil dividir una coincidencia. Un ejemplo simple es crear una expresión regular para buscar URL y luego usar grupos dentro para encontrar el protocolo (http), el dominio (www.web.com), la ruta (/lol/cats.html) y los argumentos, y lo que no.
// Example I made up on the spot, probably doesn't work very well
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])"
un único patrón se puede encontrar varias veces dentro de una cadena, como ya he dicho, por lo que si se utiliza Regex.Matches (texto cadena) que se pondrá en varias coincidencias, cada uno consistente en cero, uno o más grupos .
Los grupos nombrados se pueden encontrar indexando por número o con una cadena. El ejemplo anterior se puede utilizar como esto:
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 interesante, un grupo podría ser igualada varias veces, pero luego lo recomiendo empezar a leer la documentation.
También puede usar grupos para generar referencias, y para hacer una búsqueda parcial y reemplazar, pero lea más de eso en MSDN.
- 1. ¿Cuál es la diferencia entre vim regex y regex normal?
- 2. En .NET, ¿cuál es la diferencia entre AsFoo() y ToFoo()?
- 3. ¿Cuál es la diferencia entre KeyValuePair y Hashtable en .NET?
- 4. ¿Cuál es la diferencia entre finalizar y eliminar en .net?
- 5. ¿Cuál es la diferencia entre X509Certificate2 y X509Certificate en .NET?
- 6. ¿Cuál es la diferencia entre C# y .NET?
- 7. ¿Cuál es la diferencia entre usar el grupo de subprocesos y un subproceso normal?
- 8. ¿Cuál es la diferencia entre C#, .NET y CLI?
- 9. Diferencia entre grupo y clúster
- 10. ¿Cuál es la diferencia entre una matriz y un objeto?
- 11. ¿Cuál es la diferencia entre un hilo y una fibra?
- 12. ¿Cuál es la diferencia entre un tema y una plantilla?
- 13. ¿Cuál es la diferencia entre una mónada y un cierre?
- 14. ¿Cuál es la diferencia entre un RoutedCommand y una RoutedUICommand?
- 15. ¿Cuál es la diferencia entre un diccionario y una matriz?
- 16. ¿Cuál es la diferencia entre un algoritmo y una función?
- 17. ¿Cuál es la diferencia entre una instancia y un objeto?
- 18. ¿Cuál es la diferencia entre un método y una función?
- 19. ¿Cuál es la diferencia entre una heurística y un algoritmo?
- 20. Coincidencia de RegEx entre caracteres
- 21. ¿Cuál es la diferencia entre una expresión lambda y un predicado en .NET?
- 22. ¿Cuál es la diferencia entre dict() y {}?
- 23. ¿Cuál es la diferencia entre .ToString (+) y ""
- 24. .NET Regex admite la coincidencia global?
- 25. ¿Cuál es la diferencia entre ".equals" y "=="?
- 26. ¿Cuál es la diferencia entre DefaultAppPool y Classic .NET AppPool en IIS7?
- 27. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 28. coincidencia de una línea en JS regex
- 29. Cuál es la diferencia entre = y: =
- 30. ¿cuál es la diferencia entre:.! y: r !?