Recherche et remplacement
Transformer du texte avec regex
Recherche et remplacement est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.
regex_replace
std::regex_replace renvoie une nouvelle chaîne dans laquelle chaque correspondance d'un motif est remplacée par une chaîne de remplacement.
- La chaîne d'origine reste inchangée.
- Par défaut, toutes les correspondances sont remplacées.
#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;
}Remplacer les chiffres
Les motifs facilitent les modifications en masse, comme le masquage de chaque chiffre d'une chaîne par un espace réservé.
#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;
}Références arrière dans le remplacement
Utilisez $1, $2, ... dans la chaîne de remplacement pour insérer les groupes capturés et ainsi réorganiser le texte.
#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;
}La correspondance complète : $&
Le jeton $& désigne la correspondance complète, ce qui est pratique pour entourer le texte trouvé de caractères supplémentaires.
#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;
}Remplacer uniquement la première correspondance
Transmettez std::regex_constants::format_first_only pour ne remplacer que la première correspondance au lieu de chaque occurrence.
#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;
}Normaliser les espaces
Une tâche de nettoyage courante consiste à réduire des suites d'espaces à un seul espace.
#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;
}Supprimer les correspondances
Remplacer par une chaîne vide supprime effectivement chaque correspondance, ce qui est utile pour retirer les caractères indésirables.
#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;
}Reformater les dates
Capturez les éléments d'une date et réorganisez-les dans le remplacement pour modifier son format.
#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;
}Conserver le texte sans correspondance
Par défaut, le texte sans correspondance est recopié. Utilisez format_no_copy pour afficher uniquement les remplacements et supprimer le reste.
#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;
}Masquer des mots
Combinez l'alternance et le remplacement pour masquer une liste de mots en une seule fois.
#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;
}Construire un résultat
Comme regex_replace renvoie une chaîne, vous pouvez enchaîner les transformations en transmettant chaque résultat à l'appel suivant.
#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;
}Vérification rapide
Vérifiez votre compréhension de la syntaxe de remplacement.
Bilan
Vous avez appris à transformer du texte avec regex_replace :
- la fonction remplace toutes les correspondances par défaut et renvoie une nouvelle chaîne
$1,$2,$&insèrent les captures et la correspondance complète- les indicateurs comme
format_first_onlyetformat_no_copy - enchaînez les appels pour construire des nettoyages complexes
Ensuite, vous apprendrez à utiliser les expressions régulières efficacement et à éviter les pièges courants de performance.
Questions Fréquemment Posées
La leçon « Recherche et remplacement » est-elle gratuite ?
Oui — le texte complet de « Recherche et remplacement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Recherche et remplacement » ?
Transformer du texte avec regex Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C++ Academy ?
Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Recherche et remplacement » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?
Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les bases de regex
- Groupes de capture
- Recherche et remplacement
- Remarques sur les performances