Pesquisa e substituição
Transforme textos com regex
Pesquisa e substituição é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
regex_replace
std::regex_replace retorna uma nova cadeia na qual cada correspondência de um padrão é substituída por uma cadeia de substituição.
- A cadeia original não é alterada.
- Por padrão, todas as correspondências são substituídas.
#include <iostream>
#include <regex>
int main() {
std::regex p("cat");
std::string s = "the cat and the cat";
std::cout << std::regex_replace(s, p, "dog") << '\n';
return 0;
}Substituição de dígitos
Os padrões facilitam edições em massa, como mascarar cada dígito de uma cadeia com um marcador.
#include <iostream>
#include <regex>
int main() {
std::regex p("\\d");
std::string s = "PIN 1234";
std::cout << std::regex_replace(s, p, "*") << '\n';
return 0;
}Referências retroativas na substituição
Use $1, $2 e assim por diante na cadeia de substituição para inserir grupos capturados, permitindo reorganizar o texto.
#include <iostream>
#include <regex>
int main() {
std::regex p("(\\w+) (\\w+)");
std::string s = "John Smith";
std::cout << std::regex_replace(s, p, "$2 $1") << '\n';
return 0;
}A correspondência inteira: $&
O elemento $& representa a correspondência inteira e é útil para envolver o texto encontrado com caracteres adicionais.
#include <iostream>
#include <regex>
int main() {
std::regex p("\\d+");
std::string s = "item 42";
std::cout << std::regex_replace(s, p, "[$&]") << '\n';
return 0;
}Substituição apenas da primeira ocorrência
Passe std::regex_constants::format_first_only para substituir apenas a primeira correspondência, em vez de todas as ocorrências.
#include <iostream>
#include <regex>
int main() {
std::regex p("o");
std::string s = "foo boo";
auto out = std::regex_replace(s, p, "0", std::regex_constants::format_first_only);
std::cout << out << '\n';
return 0;
}Normalização de espaços em branco
Uma tarefa comum de limpeza é reduzir sequências de espaços em branco a um único espaço.
#include <iostream>
#include <regex>
int main() {
std::regex p("\\s+");
std::string s = "too many spaces";
std::cout << std::regex_replace(s, p, " ") << '\n';
return 0;
}Remoção de correspondências
Substituir por uma cadeia vazia efetivamente exclui todas as correspondências, o que é útil para remover caracteres indesejados.
#include <iostream>
#include <regex>
int main() {
std::regex p("[^a-zA-Z]");
std::string s = "a1b2c3";
std::cout << std::regex_replace(s, p, "") << '\n';
return 0;
}Reformatação de datas
Capture partes de uma data e reorganize-as na substituição para alterar o formato.
#include <iostream>
#include <regex>
int main() {
std::regex p("(\\d{4})-(\\d{2})-(\\d{2})");
std::string s = "2026-05-30";
std::cout << std::regex_replace(s, p, "$3/$2/$1") << '\n';
return 0;
}Manutenção do texto sem correspondência
Por padrão, o texto sem correspondência é copiado para a saída. Use format_no_copy para mostrar apenas as substituições e descartar o restante.
#include <iostream>
#include <regex>
int main() {
std::regex p("\\d+");
std::string s = "a1b2c3";
auto out = std::regex_replace(s, p, "$&", std::regex_constants::format_no_copy);
std::cout << out << '\n';
return 0;
}Censura de palavras
Combine alternância e substituição para censurar uma lista de palavras de uma só vez.
#include <iostream>
#include <regex>
int main() {
std::regex p("bad|evil");
std::string s = "a bad and evil idea";
std::cout << std::regex_replace(s, p, "***") << '\n';
return 0;
}Construção de um resultado
Como regex_replace retorna uma cadeia, você pode encadear transformações passando um resultado para a chamada seguinte.
#include <iostream>
#include <regex>
int main() {
std::string s = " Hello, World ";
s = std::regex_replace(s, std::regex("\\s+"), " ");
s = std::regex_replace(s, std::regex("^ | $"), "");
std::cout << "[" << s << "]\n";
return 0;
}Verificação rápida
Verifique sua compreensão da sintaxe de substituição.
Recapitulação
Você aprendeu a transformar texto com regex_replace:
- substitui todas as correspondências por padrão e retorna uma nova cadeia
$1,$2e$&inserem as capturas e a correspondência inteira- sinalizadores como
format_first_onlyeformat_no_copy - encadeie chamadas para criar limpezas complexas
Em seguida, você aprenderá a usar expressões regulares com eficiência e a evitar armadilhas comuns de desempenho.
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Pesquisa e substituição” é grátis?
Sim — o texto completo de “Pesquisa e substituição” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Pesquisa e substituição”?
Transforme textos com regex Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Pesquisa e substituição”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Noções básicas de regex
- Grupos de captura
- Pesquisa e substituição
- Observações sobre desempenho