Vinicius Quinafelex Alves

🌐English version

[C#] Grupo nomeado em regex

Regex é um padrão usado para descrever parte de um texto, e pode ser utilizado para localizar substrings que correspondam a um padrão dentro de um texto. Por exemplo, pode ser usado para encontrar números, e-mails, links ou qualquer outro padrão de caracteres.

Regex permite o uso de grupos para capturar partes específicas do texto dentro de um padrão.

O exemplo em C# abaixo demonstra como extrair todos os endereços de e-mail de uma string. O padrão regex usado para e-mails foi simplificado para facilitar a leitura, e não deve ser usado em produção.

Sem grupo nomeado

public static IEnumerable<Mail> ExtractMail(string input)
{
    var pattern = @"([a-z]+)@([a-z]+(.[a-z]+)*)";
    var regex = new Regex(pattern, RegexOptions.Compiled);

    foreach (Match match in regex.Matches(input))
    {
        yield return new Mail(
            username: match.Groups[1].Value,
            domain: match.Groups[2].Value);
    }
}

Com grupo nomeado

public static IEnumerable<Mail> ExtractMail(string input)
{
    var pattern = @"(?<username>[a-z]+)@(?<domain>[a-z]+(.[a-z]+)*)";
    var regex = new Regex(pattern, RegexOptions.Compiled);

    foreach (Match match in regex.Matches(input))
    {
        yield return new Mail(
            username: match.Groups["username"].Value,
            domain: match.Groups["domain"].Value);
    }
}