Suchen und Ersetzen
Text mit regex umwandeln
Suchen und Ersetzen ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
regex_replace
std::regex_replace gibt eine neue Zeichenkette zurück, in der jede Übereinstimmung eines Musters durch eine Ersetzungszeichenkette ersetzt wird.
- Die ursprüngliche Zeichenkette bleibt unverändert.
- Standardmäßig werden alle Übereinstimmungen ersetzt.
#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;
}Ziffern ersetzen
Mit Mustern lassen sich umfangreiche Änderungen einfach durchführen, etwa indem Sie jede Ziffer in einer Zeichenkette durch einen Platzhalter ersetzen.
#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ückverweise in Ersetzungen
Verwenden Sie $1, $2, ... in der Ersetzungszeichenkette, um erfasste Gruppen einzufügen und so Text neu anzuordnen.
#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;
}Die gesamte Übereinstimmung: $&
Das Token $& steht für die gesamte Übereinstimmung und eignet sich beispielsweise dazu, gefundenen Text mit zusätzlichen Zeichen zu umschließen.
#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;
}Nur die erste Übereinstimmung ersetzen
Übergeben Sie std::regex_constants::format_first_only, um nur die erste Übereinstimmung statt jedes Vorkommens zu ersetzen.
#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;
}Leerraum normalisieren
Eine häufige Bereinigungsaufgabe besteht darin, Folgen von Leerraumzeichen zu einem einzelnen Leerzeichen zusammenzufassen.
#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;
}Übereinstimmungen entfernen
Das Ersetzen durch eine leere Zeichenkette löscht effektiv jede Übereinstimmung und eignet sich, um unerwünschte Zeichen zu entfernen.
#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;
}Datumsangaben umformatieren
Erfassen Sie die Bestandteile eines Datums und ordnen Sie sie in der Ersetzung neu an, um das Format zu ändern.
#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;
}Nicht übereinstimmenden Text beibehalten
Nicht übereinstimmender Text wird standardmäßig übernommen. Verwenden Sie format_no_copy, um nur die Ersetzungen auszugeben und den Rest zu verwerfen.
#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;
}Wörter zensieren
Kombinieren Sie Alternativen mit Ersetzungen, um eine Liste von Wörtern auf einmal zu zensieren.
#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;
}Ein Ergebnis aufbauen
Da regex_replace eine Zeichenkette zurückgibt, können Sie Transformationen verketten, indem Sie jedes Ergebnis in den nächsten Aufruf übergeben.
#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;
}Kurzer Check
Prüfen Sie Ihr Verständnis der Ersetzungssyntax.
Zusammenfassung
Sie haben gelernt, wie Sie Text mit regex_replace transformieren:
- Standardmäßig werden alle Übereinstimmungen ersetzt und eine neue Zeichenkette zurückgegeben.
$1,$2,$&fügen Captures und die gesamte Übereinstimmung ein.- Flags wie
format_first_onlyundformat_no_copy - Verketten Sie Aufrufe, um komplexe Bereinigungen zu erstellen.
Als Nächstes lernen Sie, wie Sie reguläre Ausdrücke effizient einsetzen und häufige Performance-Fallen vermeiden.
Häufig gestellte Fragen
Ist die Lektion „Suchen und Ersetzen“ kostenlos?
Ja — der vollständige Text von „Suchen und Ersetzen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Suchen und Ersetzen“?
Text mit regex umwandeln Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Suchen und Ersetzen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- regex-Grundlagen
- Erfassungsgruppen
- Suchen und Ersetzen
- Performance-Hinweise