Namespaces
Variants

std:: sub_match

From cppreference.net
Regular expressions library
Classes
sub_match
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
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

durchläuft die angegebenen Teilausdrücke innerhalb aller Regex-Treffer in einem gegebenen String oder durch nicht übereinstimmende Teilstrings
(Klassentemplate)