C++:
Usando expressões regulares
Como fazer:
O C++11 introduziu suporte para expressões regulares na biblioteca padrão, <regex>
, oferecendo uma estrutura robusta para busca e manipulação de strings. Aqui está um exemplo básico de uso de expressões regulares para buscar um padrão dentro de uma string:
#include <iostream>
#include <regex>
int main() {
std::string alvo = "Olá, meu email é [email protected]";
std::regex padrao_email(R"(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)");
if (std::regex_search(alvo, padrao_email)) {
std::cout << "Email encontrado!" << std::endl;
} else {
std::cout << "Nenhum email encontrado." << std::endl;
}
return 0;
}
Saída de Exemplo
Email encontrado!
Para manipulações mais complexas, como substituir padrões dentro de strings, as expressões regulares do C++ podem ser muito úteis:
#include <iostream>
#include <regex>
int main() {
std::string texto = "A chuva na Espanha cai principalmente na planície.";
std::regex regex_vogal("([aeiou])");
std::string texto_substituido = std::regex_replace(texto, regex_vogal, "*");
std::cout << texto_substituido << std::endl;
return 0;
}
Saída de Exemplo
A ch*v* n* Esp*nh* c** pr*nc*p*lm*nt* n* pl*n*c**.
Para programadores explorando além da biblioteca padrão, a biblioteca Boost Regex (boost/regex.hpp
) é uma opção de terceiros popular que oferece capacidades de regex aprimoradas e otimizações de desempenho, particularmente para padrões complexos ou extenso processamento de dados:
#include <iostream>
#include <boost/regex.hpp>
int main() {
std::string s = "As bibliotecas Boost são divertidas!";
boost::regex expr("(\\w+)\\s(bibliotecas)"); // Correspondência "Boost bibliotecas"
std::string fmt("GNU \\1"); // Substitui por "GNU Boost"
std::string resultado = boost::regex_replace(s, expr, fmt);
std::cout << resultado << std::endl;
return 0;
}
Saída de Exemplo
GNU Boost são divertidas!
Estes exemplos arranham a superfície das capacidades do C++ com expressões regulares, ilustrando buscas básicas, correspondência de padrões e substituições, seja usando a biblioteca padrão ou aprimorado pela poderosa implementação de regex da Boost.