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: Na Prática



Expressões regulares (regex) são uma ferramenta poderosa para buscar, validar e substituir texto com base em padrões. Em C# (.NET), o trabalho com elas é feito através da classe System.Text.RegularExpressions.Regex. Neste artigo, exploraremos os principais recursos com exemplos reais: desde a simples validação de email até a extração de dados de HTML. Todos os exemplos estão prontos para copiar e usar em seus projetos.



Fundamentos do Trabalho com Regex em C#



A classe Regex fornece três métodos principais:

  • IsMatch — verifica se a string corresponde ao padrão;
  • Match — encontra a primeira correspondência;
  • Matches — encontra todas as correspondências.


Um exemplo simples — verificar se a string contém dígitos:



using System;using System.Text.RegularExpressions;

public class RegexExample{ public static void Main() { string text = "Meu número: 12345"; string pattern = @"\\d+"; // um ou mais dígitos

bool hasDigits = Regex.IsMatch(text, pattern); Console.WriteLine(hasDigits); // True }}


Observe o @ antes da string — é um literal de string verbatim, que desativa o escape da barra invertida. Sem ele, seria necessário escrever "\\\\d+".



Validação de Email e Número de Telefone



Validação de Email

A validação de email é uma tarefa clássica. Um padrão simples, mas funcional:



public static bool IsValidEmail(string email){    string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";    return Regex.IsMatch(email, pattern);}

// UsoConsole.WriteLine(IsValidEmail("user@example.com")); // TrueConsole.WriteLine(IsValidEmail("user@.com")); // False


Vamos analisar o padrão:

  • ^ — início da string;
  • [a-zA-Z0-9._%+-]+ — parte local (letras, dígitos e caracteres especiais);
  • @ — símbolo "arroba";
  • [a-zA-Z0-9.-]+ — domínio;
  • \\. — ponto (escapado);
  • [a-zA-Z]{2,} — zona do domínio (pelo menos 2 letras);
  • $ — fim da string.


Validação de Número de Telefone

Exemplo para o formato russo (+7 XXX XXX-XX-XX):



public static bool IsValidRussianPhone(string phone){    string pattern = @"^\\+7\\d{3}\\d{3}-\\d{2}-\\d{2}$";    // Ou uma versão mais flexível:    // @"^\\+7[\\s-]?\\d{3}[\\s-]?\\d{3}[\\s-]?\\d{2}[\\s-]?\\d{2}$"    return Regex.IsMatch(phone, pattern);}


Extração de Dados de Texto com Grupos de Captura



Grupos de captura (parênteses ()) permitem extrair partes da correspondência. Por exemplo, vamos extrair todos os emails de um texto:



string text = "Contatos: support@site.com, admin@test.org, info@company.net";string pattern = @"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,})";

MatchCollection matches = Regex.Matches(text, pattern);foreach (Match match in matches){ Console.WriteLine($"Email completo: {match.Value}"); Console.WriteLine($"Parte local: {match.Groups[1].Value}"); Console.WriteLine($"Domínio: {match.Groups[2].Value}"); Console.WriteLine($"Zona: {match.Groups[3].Value}"); Console.WriteLine("---");}


Resultado:

Email completo: support@site.comParte local: supportDomínio: siteZona: com---


Os grupos são numerados a partir de 1 (o grupo 0 é a correspondência completa). É possível nomeá-los:



string pattern = @"(?<user>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+)\\.(?<tld>[a-zA-Z]{2,})";// Acesso: match.Groups["user"].Value


Extração de Links de HTML



string html = @"<a href='https://example.com'>Examp                

Blogs

Book Recommendations