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::regexenthä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_matchfür die gesamte Zeichenkette undregex_searchfür Übereinstimmungen in Teilzeichenketten- Zeichenklassen, Quantifizierer, Anker und Alternativen
- vordefinierte Klassen wie
\\dund 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
- regex-Grundlagen
- Erfassungsgruppen
- Suchen und Ersetzen
- Performance-Hinweise