Match y grupos en C#
Los grupos con nombre convierten una línea de log en campos.
using System.Text.RegularExpressions;
var log = "GET /api/users 200 in 45ms";
var pattern = new Regex(@"(?<verb>GET|POST) (?<path>\S+) (?<code>\d{3})");
var m = pattern.Match(log);
if (m.Success)
{
Console.WriteLine($"verb: {m.Groups["verb"].Value}");
Console.WriteLine($"path: {m.Groups["path"].Value}");
Console.WriteLine($"code: {m.Groups["code"].Value}");
}
Cómo funciona
- La sintaxis
(?<name>...)nombra lo que el patrón captura. Matchencuentra la primera aparición;Successprotege las lecturas.m.Groups["path"]lee una captura por nombre, no por posición.
Palabras clave y builtins usados aquí
ifnewusingvar
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 363
- Tokens
- 62
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 46 segundos.
Paso 1 de 3 en Expresiones regulares; paso 1 de 17 en La biblioteca de .NET.