Søgning og erstatning
Transformér tekst med regex
Søgning og erstatning er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.
regex_replace
std::regex_replace returnerer en ny streng, hvor hver matchning af et mønster erstattes af en erstatningsstreng.
- Den oprindelige streng forbliver uændret.
- Som standard erstattes alle matchninger.
#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;
}Erstatning af cifre
Mønstre gør masseændringer nemme, for eksempel at maskere hvert ciffer i en streng med en pladsholder.
#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;
}Tilbagereferencer i erstatninger
Brug $1, $2, ... i erstatningsstrengen for at indsætte indfangede grupper, så du kan omarrangere tekst.
#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;
}Hele matchningen: $&
Symbolet $& henviser til hele matchningen og er praktisk, når du vil omgive fundet tekst med ekstra tegn.
#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;
}Erstat kun den første
Send std::regex_constants::format_first_only med for kun at erstatte den første matchning i stedet for alle forekomster.
#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;
}Normalisering af blanktegn
En almindelig oprydningsopgave er at samle sekvenser af blanktegn til ét mellemrum.
#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;
}Fjernelse af matchninger
Hvis du erstatter med en tom streng, slettes alle matchninger effektivt, hvilket er nyttigt til at fjerne uønskede tegn.
#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;
}Omformatering af datoer
Indfang dele af en dato, og omarrangér dem i erstatningen for at ændre formatet.
#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;
}Bevaring af tekst uden match
Som standard kopieres tekst uden matchning videre. Brug format_no_copy til kun at udskrive erstatningerne og fjerne resten.
#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;
}Censurering af ord
Kombinér alternation med erstatning for at censurere en liste over ord på én gang.
#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;
}Opbygning af et resultat
Fordi regex_replace returnerer en streng, kan du kæde omdannelser sammen ved at sende ét resultat videre til det næste kald.
#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;
}Hurtigt tjek
Test din forståelse af syntaksen for erstatninger.
Opsummering
Du har lært at omdanne tekst med regex_replace:
- erstatter som standard alle matchninger og returnerer en ny streng
$1,$2,$&indsætter captures og hele matchningen- flag som
format_first_onlyogformat_no_copy - kæd kald sammen for at opbygge kompleks oprydning
Dernæst lærer du at bruge regex effektivt og undgå almindelige ydelsesproblemer.
Lær C++ med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Søgning og erstatning” gratis?
Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “Søgning og erstatning”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Søgning og erstatning”?
Transformér tekst med regex Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C++ Academy?
Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Søgning og erstatning”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C++ Academy-lektion?
Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Grundlæggende om regex
- Capture-grupper
- Søgning og erstatning
- Ydelsesnoter