Expressões regulares em C# com exemplos: na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Expressões regulares em C# com exemplos: da teoria à prática

\n\n

Expressões regulares (regex) são uma ferramenta poderosa para buscar, extrair e substituir texto com base em padrões. Em C# (.NET), o trabalho com regex é implementado através do namespace System.Text.RegularExpressions e da classe Regex. Neste artigo, abordaremos os principais recursos com exemplos reais: desde a busca simples até a validação de email e telefone.

\n\n

1. Fundamentos: a classe Regex e seus métodos

\n\n

A classe principal para trabalhar é Regex. Ela fornece métodos estáticos e de instância. Aqui estão os principais:

\n\n
    \n
  • IsMatch — verifica se a string contém uma correspondência com o padrão.
  • \n
  • Match — encontra a primeira correspondência.
  • \n
  • Matches — encontra todas as correspondências.
  • \n
  • Replace — substitui as correspondências pela string especificada.
  • \n
  • Split — divide a string com base no padrão.
  • \n
\n\n

Exemplo 1. Verificação simples

\n
using System;\nusing System.Text.RegularExpressions;\n\nclass Program\n{\n    static void Main()\n    {\n        string text = "Olá, meu número: 123-456-7890";\n        string pattern = @"\\d{3}-\\d{3}-\\d{4}";\n\n        if (Regex.IsMatch(text, pattern))\n        {\n            Console.WriteLine("Número encontrado!");\n        }\n    }\n}\n
\n\n

Neste exemplo, \\d{3} significa "exatamente três dígitos". A barra invertida é escapada usando @ (string verbatim).

\n\n

2. Grupos de captura e extração de dados

\n\n

Grupos de captura permitem extrair partes da correspondência. Eles são definidos por parênteses (). Cada grupo recebe um número ordinal (começando em 1).

\n\n

Exemplo 2. Extraindo nome de usuário e domínio de um email

\n
string email = "user@example.com";\nstring pattern = @"^(\\w+)@(\\w+\\.\\w+)$";\n\nMatch match = Regex.Match(email, pattern);\n\nif (match.Success)\n{\n    Console.WriteLine($"Usuário: {match.Groups[1].Value}");   // user\n    Console.WriteLine($"Domínio: {match.Groups[2].Value}");   // example.com\n}\n
\n\n

Aqui, (\\w+) captura um ou mais caracteres alfanuméricos. ^ e $ são âncoras de início e fim da string.

\n\n

Exemplo 3. Analisando uma URL

\n
string url = "https://pythonlib.ru/page?id=42";\nstring pattern = @"^(https?)://([^/]+)(/.*)?$";\n\nMatch m = Regex.Match(url, pattern);\nif (m.Success)\n{\n    Console.WriteLine($"Protocolo: {m.Groups[1].Value}"); // https\n    Console.WriteLine($"Domínio: {m.Groups[2].Value}");    // pythonlib.ru\n    Console.WriteLine($"Caminho: {m.Groups[3].Value}");     // /page?id=42\n}\n
\n\n

3. Substituição e remoção de texto

\n\n

O método Replace permite substituir trechos encontrados. É possível usar referências reversas como $1, $2 para inserir grupos.

\n\n

Exemplo 4. Formatando número de telefone

\n
string raw = "89161234567";\nstring pattern = @"(\\d{1})(\\d{3})(\\d{3})(\\d{2})(\\d{2})";\nstring replacement = "+7 ($2) $3-$4-$5";\n\nstring formatted = Regex.Replace(raw, pattern, replacement);\nConsole.WriteLine(formatted); // +7 (916) 123-45-67\n
\n\n

Exemplo 5. Removendo espaços extras

\n
string text = "Este    texto   tem    espaços   extras.";\nstring cleaned = Regex.Replace(text, @"\\s+", " ");\nConsole.WriteLine(cleaned); // "Este texto tem espaços extras."\n
\n\n

\\s+ — um ou mais caracteres de espaço em branco. Substituímos por um espaço simples.

\n\n

4. Casos reais: validação de email e telefone

\n\n

Na prática, regex é mais frequentemente usado para validar entrada do usuário. Vamos dar dois exemplos típicos.

\n\n

Validação de email (simplificada)

\n
public static bool IsValidEmail(string email)\n{\n    if (string.IsNullOrWhiteSpace(email))\n        return false;\                

Blogs

Book Recommendations