Ricerca e sostituzione
Trasformare il testo con regex
Ricerca e sostituzione è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.
regex_replace
std::regex_replace restituisce una nuova stringa in cui ogni corrispondenza di un pattern viene sostituita da una stringa sostitutiva.
- La stringa originale rimane invariata.
- Per impostazione predefinita, vengono sostituite tutte le corrispondenze.
#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;
}Sostituire le cifre
I pattern semplificano le modifiche in blocco, ad esempio sostituire ogni cifra di una stringa con un segnaposto.
#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;
}Backreference nella sostituzione
Utilizzate $1, $2, ... nella stringa sostitutiva per inserire i gruppi catturati e riorganizzare il testo.
#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;
}L'intera corrispondenza: $&
Il token $& fa riferimento all'intera corrispondenza ed è utile per racchiudere il testo trovato tra caratteri aggiuntivi.
#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;
}Sostituire solo la prima
Passate std::regex_constants::format_first_only per sostituire solo la prima corrispondenza invece di ogni occorrenza.
#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;
}Normalizzare gli spazi bianchi
Un'attività di pulizia comune consiste nel ridurre sequenze di spazi bianchi a un singolo spazio.
#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;
}Rimuovere le corrispondenze
Sostituire con una stringa vuota elimina di fatto ogni corrispondenza ed è utile per rimuovere i caratteri indesiderati.
#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;
}Riformattare le date
Catturate le parti di una data e riordinatele nella sostituzione per modificarne il 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;
}Conservare il testo senza corrispondenza
Per impostazione predefinita, il testo senza corrispondenza viene copiato così com'è. Utilizzate format_no_copy per produrre solo le sostituzioni ed eliminare il resto.
#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;
}Censurare le parole
Combinate l'alternanza con la sostituzione per censurare contemporaneamente un elenco di parole.
#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;
}Costruire un risultato
Poiché regex_replace restituisce una stringa, potete concatenare le trasformazioni passando il risultato di una chiamata a quella successiva.
#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 rapida
Verificate la vostra comprensione della sintassi delle sostituzioni.
Riepilogo
Avete imparato a trasformare il testo con regex_replace:
- sostituisce tutte le corrispondenze per impostazione predefinita e restituisce una nuova stringa
$1,$2,$&inseriscono le catture e l'intera corrispondenza- flag come
format_first_onlyeformat_no_copy - concatenare le chiamate per costruire operazioni di pulizia complesse
Ora imparerete a utilizzare le regex in modo efficiente ed evitare le insidie comuni delle prestazioni.
Impara C++ con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 51
- Lezioni
- 203
Domande Frequenti
La lezione «Ricerca e sostituzione» è gratuita?
Sì — il testo completo di «Ricerca e sostituzione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.
Cosa imparerò in «Ricerca e sostituzione»?
Trasformare il testo con regex Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C++ Academy?
Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Ricerca e sostituzione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C++ Academy?
Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Nozioni di base su regex
- Gruppi di cattura
- Ricerca e sostituzione
- Note sulle prestazioni