0Pricing
C++ Academy · Lektion

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

  1. regex-Grundlagen
  2. Erfassungsgruppen
  3. Suchen und Ersetzen
  4. Performance-Hinweise
← Zurück zu C++ Academy