Namensräume
Varianten
Aktionen

std::sub_match

Von cppreference.com
< cpp‎ | regex
 
 
 
Bibliothek für reguläre Ausdrücke
Klassen
sub_match
(C++11)
Algorithmen
Iteratoren
Ausnahmen
Traits
Konstanten
(C++11)
Reguläre Ausdrucksgrammatiken
 
 
Definiert in Header <regex>
template< class BidirIt >
class sub_match;
(seit C++11)

Die Klassenvorlage std::sub_match wird von der regulären Ausdrucks-Engine verwendet, um Zeichenfolgen zu bezeichnen, die von markierten Teil-Ausdrücken übereinstimmen. Ein Treffer ist ein [beginend)-Paar innerhalb des vom regulären Ausdruck übereinstimmenden Zielbereichs, jedoch mit zusätzlichen Observer-Funktionen zur Verbesserung der Code-Lesbarkeit.

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 konstruiert und befüllt.

Die Member-Funktionen geben definierte Standardwerte zurück, es sei denn, das Member matched ist true.

std::sub_match erbt von std::pair<BidirIt, BidirIt>, obwohl es nicht wie ein std::pair-Objekt behandelt werden kann, da Member-Funktionen wie die Zuweisung nicht wie erwartet funktionieren.

Inhalt

[edit] Typanforderungen

-
BidirIt muss die Anforderungen von LegacyBidirectionalIterator erfüllen.

[edit] Spezialisierungen

Mehrere Spezialisierungen für gängige Zeichensequenztypen werden bereitgestellt

Definiert in 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>

[edit] 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>

[edit] Datenmember

Mitglied Beschreibung
bool matched
ob diese Übereinstimmung erfolgreich war
(öffentliches Mitgliedsobjekt)

Erbt von std::pair

BidirIt first
Start der Übereinstimmungssequenz
(öffentliches Mitgliedsobjekt)
BidirIt second
Ein-Posten-Ende der Übereinstimmungssequenz
(öffentliches Mitgliedsobjekt)

[edit] Member-Funktionen

konstruiert das Übereinstimmungsobjekt
(public member function) [edit]
Observer
gibt die Länge der Übereinstimmung zurück (falls vorhanden)
(public member function) [edit]
konvertiert in den zugrunde liegenden String-Typ
(public member function) [edit]
vergleicht die übereinstimmende Teilsequenz (falls vorhanden)
(public member function) [edit]
Modifizierer
tauscht die Inhalte
(public member function) [edit]

[edit] 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
(Funktionstemplate) [bearbeiten]
gibt die übereinstimmende Zeichenteilsequenz aus
(function template) [edit]

[edit] 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: '.'

[edit] Siehe auch

iteriert durch die angegebenen Unterausdrücke innerhalb aller Regex-Übereinstimmungen in einer gegebenen Zeichenkette oder durch nicht übereinstimmende Teilzeichenketten
(Klassenvorlage) [bearbeiten]