0Pricing
C++ Academy · Lektion

regex-Grundlagen

Muster in Text abgleichen

regex-Grundlagen ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was ist <regex>?

Mit dem Header <regex> können Sie Text anhand von regulären Ausdrücken abgleichen, die Mengen von Zeichenketten beschreiben. Sie erstellen ein Muster und testen oder durchsuchen anschließend Text damit.

  • std::regex enthält ein kompiliertes Muster.
  • Matching-Funktionen geben an, ob der Text passt.
#include <iostream>
#include <regex>

int main() {
    std::regex pattern("hello");
    std::cout << std::boolalpha << std::regex_match("hello", pattern) << '\n';
    return 0;
}

regex_match vs. regex_search

regex_match erfordert, dass die gesamte Zeichenkette übereinstimmt. regex_search ist erfolgreich, wenn das Muster irgendwo in der Zeichenkette vorkommt.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat");
    std::string s = "the cat sat";
    std::cout << std::boolalpha;
    std::cout << "match: " << std::regex_match(s, p) << '\n';
    std::cout << "search: " << std::regex_search(s, p) << '\n';
    return 0;
}

Zeichenklassen

Eckige Klammern definieren eine Menge zulässiger Zeichen. [aeiou] entspricht einem beliebigen einzelnen Vokal; Bereiche wie [a-z] entsprechen Kleinbuchstaben.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[a-z]+");
    std::cout << std::boolalpha << std::regex_match("hello", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Quantifizierer

Quantifizierer steuern Wiederholungen: * null oder mehr, + einmal oder mehr, ? optional und {n,m} ein Anzahlbereich.

#include <iostream>
#include <regex>

int main() {
    std::regex p("a+b");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("aaab", p) << '\n';
    std::cout << std::regex_match("b", p) << '\n';
    return 0;
}

Vordefinierte Klassen

Kurzschreibweisen sparen Tipparbeit: \\d entspricht einer Ziffer, \\w einem Wortzeichen und \\s einem Leerraumzeichen. In C++-Quelltext muss der Backslash verdoppelt werden.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("12345", p) << '\n';
    std::cout << std::regex_match("12a45", p) << '\n';
    return 0;
}

Anker

Anker binden eine Übereinstimmung an eine Position: ^ markiert den Anfang und $ das Ende des Textes. Sie entsprechen Positionen, nicht Zeichen.

#include <iostream>
#include <regex>

int main() {
    std::regex p("^abc$");
    std::cout << std::boolalpha;
    std::cout << std::regex_search("abc", p) << '\n';
    std::cout << std::regex_search("xabc", p) << '\n';
    return 0;
}

Alternativen

Der senkrechte Strich | bedeutet „oder“. Das Muster cat|dog entspricht einem der beiden Wörter. Verwenden Sie Klammern, um den Geltungsbereich zu begrenzen.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat|dog");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("cat", p) << '\n';
    std::cout << std::regex_match("dog", p) << '\n';
    std::cout << std::regex_match("fish", p) << '\n';
    return 0;
}

Sonderzeichen escapen

Zeichen wie ., * und ( haben eine besondere Bedeutung. Escapen Sie sie mit einem Backslash, um sie wörtlich abzugleichen.

#include <iostream>
#include <regex>

int main() {
    std::regex p("3\\.14");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("3.14", p) << '\n';
    std::cout << std::regex_match("3x14", p) << '\n';
    return 0;
}

Groß- und Kleinschreibung ignorieren

Übergeben Sie beim Erstellen des Musters ein Flag wie std::regex::icase, um beim Abgleichen die Groß- und Kleinschreibung zu ignorieren.

#include <iostream>
#include <regex>

int main() {
    std::regex p("hello", std::regex::icase);
    std::cout << std::boolalpha;
    std::cout << std::regex_match("HELLO", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Eine einfache Validierung

Muster eignen sich hervorragend, um Eingabeformate zu validieren, etwa um zu prüfen, ob eine Zeichenkette wie eine einfache Zahl mit optionalem Vorzeichen aussieht.

#include <iostream>
#include <regex>

bool isNumber(const std::string& s) {
    static const std::regex p("-?\\d+");
    return std::regex_match(s, p);
}

int main() {
    std::cout << std::boolalpha;
    std::cout << isNumber("-42") << '\n';
    std::cout << isNumber("4a2") << '\n';
    return 0;
}

Mehrfaches Abgleichen

Kombinieren Sie Zeichenklassen und Quantifizierer, um komplexere Formate zu validieren, beispielsweise eine Folge von Buchstaben, auf die Ziffern folgen.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[A-Za-z]+\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("abc123", p) << '\n';
    std::cout << std::regex_match("123abc", p) << '\n';
    return 0;
}

Kurzer Check

Prüfen Sie Ihr Verständnis von Abgleichen und Suchen.

Zusammenfassung

Sie haben die Grundlagen von <regex> kennengelernt:

  • regex_match für die gesamte Zeichenkette und regex_search für Übereinstimmungen in Teilzeichenketten
  • Zeichenklassen, Quantifizierer, Anker und Alternativen
  • vordefinierte Klassen wie \\d und das Escapen von Sonderzeichen
  • Flags wie icase

Als Nächstes extrahieren Sie mithilfe von Capturing-Gruppen bestimmte Teile einer Übereinstimmung.

Häufig gestellte Fragen

Ist die Lektion „regex-Grundlagen“ kostenlos?

Ja — der vollständige Text von „regex-Grundlagen“ 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 „regex-Grundlagen“?

Muster in Text abgleichen 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 1 von 4.

Wie lange dauert die Lektion „regex-Grundlagen“?

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