Reguläre Ausdrücke in C++ mit Beispielen für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Reguläre Ausdrücke in C++ mit Beispielen: vollständige Anleitung für Anfänger



Reguläre Ausdrücke (regex) sind ein mächtiges Werkzeug zum Suchen, Prüfen und Ersetzen von Text nach einem Muster. In C++ wird die Arbeit mit regulären Ausdrücken über die Bibliothek <regex> realisiert, die im Standard C++11 eingeführt wurde. In diesem Artikel analysieren wir die Grundlagen der Arbeit mit regex in C++ anhand praktischer Beispiele, die auch für Anfänger verständlich sind.



Was sind reguläre Ausdrücke und wozu braucht man sie?



Ein regulärer Ausdruck ist eine Zeichenfolge, die ein Muster für die Suche in einem Text vorgibt. Beispielsweise beschreibt das Muster \\d{3}-\\d{2}-\\d{2} das Format einer Sozialversicherungsnummer: drei Ziffern, Bindestrich, zwei Ziffern, Bindestrich, zwei Ziffern.



Die Hauptaufgaben, die mit regulären Ausdrücken in C++ gelöst werden:



  • Überprüfung der Eingabekorrektheit (E-Mail, Telefon, Datum)
  • Extrahieren von Daten aus Text
  • Suchen und Ersetzen von Teilzeichenfolgen
  • Aufteilen von Zeichenfolgen nach komplexen Trennzeichen


Die Bibliothek <regex> bietet drei grundlegende Algorithmen:



  • std::regex_match — vollständige Übereinstimmung der Zeichenfolge mit dem Muster
  • std::regex_search — Suche nach einer Übereinstimmung in der Zeichenfolge
  • std::regex_replace — Ersetzen von Übereinstimmungen nach Muster


Grundlegende Syntax regulärer Ausdrücke in C++



Bevor wir Code schreiben, analysieren wir die grundlegenden Elemente der regex-Syntax, die in den Beispielen nützlich sein werden:



ZeichenBedeutungBeispiel
.Beliebiges Zeichen (außer Zeilenumbruch)c.t — cat, cot, cut
\\dZiffer (0-9)\\d\\d — 23, 45, 99
\\wBuchstabe, Ziffer oder Unterstrich\\w+ — Wort
\\sLeerzeichen\\s+ — ein oder mehrere Leerzeichen
*0 oder mehr Wiederholungenab*c — ac, abc, abbc
+1 oder mehr Wiederholungenab+c — abc, abbc (nicht ac)
?0 oder 1 Wiederholungcolou?r — color, colour
{n}Genau n Wiederholungen\\d{3} — 123, 456
[abc]Beliebiges Zeichen aus der Menge[aeiou] — Vokal
()Gruppe zum Erfassen(\\d{2})-(\\d{2})


Beispiel 1: Überprüfung einer E-Mail-Adresse mit regex_match



Beginnen wir mit etwas Einfachem — prüfen wir, ob eine Zeichenfolge dem E-Mail-Format entspricht. Wir verwenden std::regex_match, das eine vollständige Übereinstimmung erfordert.



#include <iostream>#include <regex>#include <string>

int main() { std::string email = "user@example.com"; // Einfaches Muster für E-Mail: // [\\w.]+ — ein oder mehrere Zeichen (Buchstaben, Ziffern, Punkt, Unterstrich) // @ — Klammeraffe // [\\w.]+ — Domainname // \\.[a-z]{2,} — Punkt und Top-Level-Domain (ab 2 Buchstaben) std::regex pattern(R"([\\w.]+@[\\w.]+\\.\\w{2,})"); if (std::regex_match(email, pattern)) { std::cout << "E-Mail ist korrekt" << std::endl; } else { std::cout << "E-Mail ist nicht korrekt" << std::endl; } // Beispiel mit ungültiger E-Mail email = "user@com"; if (std::regex_match(email, pattern)) { std::cout << "E-Mail ist korrekt" << std::endl; } else { std::cout << "E-Mail ist nicht korrekt" << std::endl; } return 0;}


Ergebnis der Ausführung:

E-Mail ist korrektE-Mail ist nicht korrekt


Beachten Sie

Blogs

Buchempfehlungen