std:: sub_match
|
Definiert im Header
<regex>
|
||
|
template
<
class
BidirIt
>
class sub_match ; |
(seit C++11) | |
Die Klassenvorlage
std::sub_match
wird von der Regex-Engine verwendet, um Zeichensequenzen zu bezeichnen, die durch markierte Teilausdrücke erfasst wurden.
Eine Übereinstimmung ist ein
[
begin
,
end
)
Paar innerhalb des Zielbereichs, der durch den regulären Ausdruck erfasst wurde, jedoch mit zusätzlichen Beobachterfunktionen zur Erhöhung der Codeklarheit.
Nur der Standardkonstruktor ist öffentlich zugänglich. Instanzen von
std::sub_match
werden normalerweise als Teil eines
std::match_results
-Containers während der Verarbeitung eines der Regex-Algorithmen erstellt und befüllt.
Die Member-Funktionen geben definierte Standardwerte zurück, es sei denn, das
matched
Member ist
true
.
std::sub_match
erbt von
std::
pair
<
BidirIt, BidirIt
>
, obwohl es nicht als ein
std::pair
-Objekt behandelt werden kann, da Memberfunktionen wie Zuweisung nicht wie erwartet funktionieren.
Inhaltsverzeichnis |
Typanforderungen
-
BidirIt
muss die Anforderungen eines
LegacyBidirectionalIterator
erfüllen.
|
Spezialisierungen
Für häufige Zeichensequenztypen werden mehrere Spezialisierungen bereitgestellt:
|
Definiert im Header
<regex>
|
|
| Typ | Definition |
std::csub_match
|
std :: sub_match < const char * > |
std::wcsub_match
|
std :: sub_match < const wchar_t * > |
std::ssub_match
|
std :: sub_match < std :: string :: const_iterator > |
std::wssub_match
|
std :: sub_match < std :: wstring :: const_iterator > |
Verschachtelte Typen
| Typ | Definition |
iterator
|
BidirIt
|
value_type
|
std:: iterator_traits < BidirIt > :: value_type |
difference_type
|
std:: iterator_traits < BidirIt > :: difference_type |
string_type
|
std:: basic_string < value_type > |
Datenmitglieder
| Mitglied | Beschreibung |
|
bool
matched
|
ob dieser Treffer erfolgreich war
(öffentliches Mitgliedsobjekt) |
Geerbt von std:: pair
|
BidirIt
first
|
Start der Übereinstimmungssequenz
(öffentliches Mitgliedsobjekt) |
|
BidirIt
second
|
Ende-der-Übereinstimmungssequenz (eins nach dem Ende)
(öffentliches Mitgliedsobjekt) |
Memberfunktionen
|
Konstruiert das Match-Objekt
(öffentliche Elementfunktion) |
|
Observer |
|
|
Gibt die Länge des Matches zurück (falls vorhanden)
(öffentliche Elementfunktion) |
|
|
Konvertiert in den zugrundeliegenden String-Typ
(öffentliche Elementfunktion) |
|
|
Vergleicht die gematchte Teilsequenz (falls vorhanden)
(öffentliche Elementfunktion) |
|
Modifikatoren |
|
|
Tauscht die Inhalte aus
(öffentliche Elementfunktion) |
|
Nicht-Member-Funktionen
|
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(entfernt in C++20)
(C++20)
|
vergleicht ein
sub_match
mit einem anderen
sub_match
, einem String oder einem Zeichen
(Funktions-Template) |
|
gibt die übereinstimmende Zeichenfolge aus
(Funktions-Template) |
Beispiel
#include <cassert> #include <iostream> #include <regex> #include <string> int main() { std::string sentence{"Friday the thirteenth."}; const std::regex re{"([A-z]+) ([a-z]+) ([a-z]+)"}; std::smatch words; std::regex_search(sentence, words, re); std::cout << std::boolalpha; for (const auto& m : words) { assert(m.matched); std::cout << "m: [" << m << "], m.length(): " << m.length() << ", " "*m.first: '" << *m.first << "', " "*m.second: '" << *m.second << "'\n"; } }
Ausgabe:
m: [Friday the thirteenth], m.length(): 21, *m.first: 'F', *m.second: '.' m: [Friday], m.length(): 6, *m.first: 'F', *m.second: ' ' m: [the], m.length(): 3, *m.first: 't', *m.second: ' ' m: [thirteenth], m.length(): 10, *m.first: 't', *m.second: '.'
Siehe auch
|
(C++11)
|
durchläuft die angegebenen Teilausdrücke innerhalb aller Regex-Treffer in einem gegebenen String oder durch nicht übereinstimmende Teilstrings
(Klassentemplate) |