kennen:include:regex
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | kennen:include:regex [2019-03-31 16:52] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== < | ||
+ | ===== Überblick ===== | ||
+ | Suchmuster (reguläre Ausdrücke) ermöglichen effizientes Prüfen, Erkennen, Suchen, Filtern und Ersetzen in Zeichenketten. | ||
+ | Die Klasse '' | ||
+ | Die Fehlerbehandlung erfolgt über die Ausnahme '' | ||
+ | Die Klassen der < | ||
+ | |||
+ | Weitergehende Informationen: | ||
+ | * [[wpde> | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | ==== Validieren ==== | ||
+ | Die Übereinstimmung der gesamten Zeichenkette wird geprüft mit | ||
+ | <code cpp> | ||
+ | std::string s = " | ||
+ | std::regex rex; | ||
+ | rex = " | ||
+ | |||
+ | if (std:: | ||
+ | </ | ||
+ | |||
+ | In regulären Ausdrücken auftretende fallende Schrägstriche (Backslash) sind als '' | ||
+ | In solchen Fällen ist ein //raw string// '' | ||
+ | <code cpp> | ||
+ | rex = R" | ||
+ | </ | ||
+ | |||
+ | ==== Suchen ==== | ||
+ | Das Vorkommen von Teilzeichenketten, | ||
+ | <code cpp> | ||
+ | if (std:: | ||
+ | </ | ||
+ | geprüft. | ||
+ | Übereinstimmende Bereiche einer Durchmusterung lassen sich in '' | ||
+ | <code cpp> | ||
+ | std::string s = " | ||
+ | std::regex regex(R" | ||
+ | std::smatch matches; | ||
+ | if (std:: | ||
+ | { | ||
+ | std::string date = matches[0]; | ||
+ | std::string day = matches[1], month = matches[2], year = matches[3]; | ||
+ | // ... | ||
+ | } | ||
+ | </ | ||
+ | Der gefundene Gesamtausdruck liegt in '' | ||
+ | Durch runde Klammern markierte Teilausdrücke in weiteren Elementen '' | ||
+ | |||
+ | ==== Ersetzen ==== | ||
+ | Der Ausdruck | ||
+ | <code cpp> | ||
+ | std:: | ||
+ | </ | ||
+ | liefert eine neue Zeichenkette, | ||
+ | in der gegenüber dem Original alle Übereinstimmungen mit dem regulären Ausdruck | ||
+ | durch die Ersatz-Zeichenkette ausgetauscht sind. | ||
+ | |||
+ | Mit dem optionalen Parameter '' | ||
+ | wird der Austausch auf das erste Vorkommen beschränkt. | ||
+ | |||
+ | ==== Regex-Tester ==== | ||
+ | Reguläre Ausdrücke können recht komplex werden. | ||
+ | Zum Testen empfiehlt sich ein kleines Programm (nach http:// | ||
+ | <code cpp regexdemo.cpp> | ||
+ | // modified from: http:// | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | int main( ) | ||
+ | { | ||
+ | while (true) | ||
+ | { | ||
+ | std::string expr, s; | ||
+ | std::cout << " | ||
+ | std:: | ||
+ | if (!std::cin || expr == " | ||
+ | std::cout << " | ||
+ | std:: | ||
+ | try | ||
+ | { | ||
+ | std::smatch matches; | ||
+ | if (std:: | ||
+ | { | ||
+ | // matches[0] contains the original string. | ||
+ | // matches[n] contains a sub_match object for each matching subexpression | ||
+ | for (size_t i = 0; i < matches.size(); | ||
+ | { | ||
+ | // sub_match is pair of iterators to the first | ||
+ | // and one past the last chars of the matching subexpression | ||
+ | // (matches[i].first, | ||
+ | std::string match = matches[i]; | ||
+ | std::cout << " | ||
+ | } | ||
+ | } | ||
+ | else std::cout << "The regexp \"" | ||
+ | << | ||
+ | } | ||
+ | catch (std:: | ||
+ | { | ||
+ | std::cout << expr << " is not a valid regular expression: \"" | ||
+ | << e.what() << " | ||
+ | } | ||
+ | } | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Klassen ===== | ||
+ | <code cpp> | ||
+ | class regex; | ||
+ | class wregex; | ||
+ | </ | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | <code cpp> | ||
+ | class smatch; | ||
+ | class wmatch; | ||
+ | class cmatch; | ||
+ | class wcmatch; | ||
+ | </ | ||
+ | | ||
+ | |||
+ | <code cpp> | ||
+ | class regex_error; | ||
+ | </ | ||
+ | | ||
+ | |||
+ | ===== Funktionen ===== | ||
+ | <code cpp> | ||
+ | bool regex_match(const string& s, const regex& e, match_flag_type flags = match_default) | ||
+ | bool regex_match(const string& s, smatch& m, const regex& e, match_flag_type flags = match_default) | ||
+ | bool regex_match(Bi first, Bi last, const regex& e, match_flag_type flags = match_default) | ||
+ | bool regex_match(Bi first, Bi last, smatch& m, const regex& e, match_flag_type flags = match_default) | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | <code cpp> | ||
+ | string regex_replace(const string& s, const regex& e, const string& fmt, match_flag_type flags = match_default) | ||
+ | Out regex_replace(Out out, Bi first, Bi last, const regex& e, const string& fmt, match_flag_type flags = match_default) | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | mit dem [[..: | ||
+ | durch den Inhalt der Zeichenkette '' | ||
+ | |||
+ | <code cpp> | ||
+ | bool regex_search(const string& s, const regex& e, match_flag_type flags = match_default) | ||
+ | bool regex_search(const string& s, smatch& m, const regex& e, match_flag_type flags = match_default) | ||
+ | bool regex_search(Bi first, Bi last, const regex& e, match_flag_type flags = match_default) | ||
+ | bool regex_search(Bi first, Bi last, smatch& m, const regex& e, match_flag_type flags = match_default) | ||
+ | </ | ||
+ | | ||
+ | | ||
+ | mit dem [[..: | ||
+ | durch den Inhalt der Zeichenkette '' | ||
+ | | ||
+ | |||
+ | |||
+ | ===== Konstanten ===== | ||
+ | Regex-Syntax-Optionen in '' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |||
+ | Optionen der Durchmusterung in '' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |||
+ | Optionen zum Suchen/ | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
kennen/include/regex.txt · Zuletzt geändert: 2019-03-31 16:52 von 127.0.0.1