Expressões regulares em C++ com exemplos para iniciantes

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: guia completo para iniciantes



Expressões regulares (regex) são uma ferramenta poderosa para buscar, validar e substituir texto com base em um padrão. Em C++, o trabalho com expressões regulares é implementado através da biblioteca <regex>, que foi introduzida no padrão C++11. Neste artigo, vamos explorar os fundamentos do uso de regex em C++ com exemplos práticos, compreensíveis até para iniciantes.



O que são expressões regulares e para que servem?



Uma expressão regular é uma sequência de caracteres que define um padrão para busca em texto. Por exemplo, o padrão \\d{3}-\\d{2}-\\d{2} descreve o formato de um número de CPF: três dígitos, um traço, dois dígitos, um traço, dois dígitos.



As principais tarefas resolvidas por expressões regulares em C++ são:



  • Validação de entrada (email, telefone, data)
  • Extração de dados de texto
  • Busca e substituição de substrings
  • Divisão de strings por separadores complexos


A biblioteca <regex> fornece três algoritmos principais:



  • std::regex_match — correspondência completa da string com o padrão
  • std::regex_search — busca por correspondência na string
  • std::regex_replace — substituição de correspondências com base no padrão


Sintaxe básica de expressões regulares em C++



Antes de escrever código, vamos revisar os elementos básicos da sintaxe regex que serão úteis nos exemplos:



SímboloSignificadoExemplo
.Qualquer caractere (exceto quebra de linha)c.t — cat, cot, cut
\\dDígito (0-9)\\d\\d — 23, 45, 99
\\wLetra, dígito ou sublinhado\\w+ — palavra
\\sCaractere de espaço em branco\\s+ — um ou mais espaços
*0 ou mais repetiçõesab*c — ac, abc, abbc
+1 ou mais repetiçõesab+c — abc, abbc (não ac)
?0 ou 1 repetiçãocolou?r — color, colour
{n}Exatamente n repetições\\d{3} — 123, 456
[abc]Qualquer caractere do conjunto[aeiou] — vogal
()Grupo de captura(\\d{2})-(\\d{2})


Exemplo 1: Validação de email com regex_match



Vamos começar com algo simples — verificar se uma string corresponde ao formato de email. Usaremos std::regex_match, que exige correspondência completa.



#include <iostream>#include <regex>#include <string>

int main() { std::string email = "user@example.com"; // Padrão simples para email: // [\\w.]+ — um ou mais caracteres (letras, dígitos, ponto, sublinhado) // @ — símbolo arroba // [\\w.]+ — nome de domínio // \\.[a-z]{2,} — ponto e domínio de topo (pelo menos 2 letras) std::regex pattern(R"([\\w.]+@[\\w.]+\\.\\w{2,})"); if (std::regex_match(email, pattern)) { std::cout << "Email válido" << std::endl; } else { std::cout << "Email inválido" << std::endl; } // Exemplo com email inválido email = "user@com"; if (std::regex_match(email, pattern)) { std::cout << "Email válido" << std::endl; } else { std::cout << "Email inválido" << std::endl; } return 0;}


Resultado da execução:

Email válidoEmail inválido


Observe que

Blogs

Book Recommendations