0Pricing
C++ Academy · Leçon

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_only et format_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

  1. Les bases de regex
  2. Groupes de capture
  3. Recherche et remplacement
  4. Remarques sur les performances
← Retour à C++ Academy