Udostępnij za pośrednictwem


sub_match — Klasa

Opisuje podpaskę.

Składnia

template <class BidIt>
class sub_match
    : public std::pair<BidIt, BidIt>

Parametry

BidIt
Typ iteratora dla podmatów.

Uwagi

Szablon klasy opisuje obiekt, który wyznacza sekwencję znaków pasujących do grupy przechwytywania w wywołaniu regex_match lub regex_search. Obiekty typu match_results Klasa przechowują tablicę tych obiektów, po jednym dla każdej grupy przechwytywania w wyrażeniu regularnym, które zostało użyte w wyszukiwaniu.

Jeśli grupa przechwytywania nie była zgodna z elementem członkowskim matched danych obiektu, ma wartość false, a dwa iteratory first i second (odziedziczone z podstawy std::pair) są równe. Jeśli grupa przechwytywania została dopasowana, ma wartość true, matched iterator wskazuje pierwszy znak w sekwencji docelowej pasujący do grupy przechwytywania, a iterator first second wskazuje jedną pozycję obok ostatniego znaku w sekwencji docelowej, która pasuje do grupy przechwytywania. W przypadku dopasowania o zerowej długości element członkowski matched ma wartość true, dwa iteratory będą równe, a oba będą wskazywać pozycję dopasowania.

Dopasowanie o zerowej długości może wystąpić, gdy grupa przechwytywania składa się wyłącznie z asercji lub powtórzenia, które umożliwia zero powtórzeń. Na przykład:

"^" pasuje do sekwencji docelowej "a"; sub_match obiekt odpowiadający grupie przechwytywania 0 zawiera iteratory wskazujące pierwszy znak w sekwencji.

"b(a*)b" pasuje do sekwencji docelowej "bb"; sub_match obiekt odpowiadający grupie przechwytywania 1 zawiera iteratory wskazujące drugi znak w sekwencji.

Typedefs

Nazwa typu opis
difference_type Typ różnicy iteratora.
Sterująca Typ iteratora.
value_type Typ elementu.

Funkcje składowe

Funkcja składowa opis
porównywać Porównaj podpasuj z sekwencją.
length Zwraca długość podmatu.
Dopasowane Wskazuje, czy dopasowanie zakończyło się pomyślnie.
Str Konwertuje podmatcz na ciąg.

Operatory

Operator opis
operator basic_string value_type<> Rzutuje podpasowanie do ciągu.

Przykład

// std__regex__sub_match.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

int main()
    {
    std::regex rx("c(a*)|(b)");
    std::cmatch mr;

    std::regex_search("xcaaay", mr, rx);

    std::csub_match sub = mr[1];
    std::cout << "matched == " << std::boolalpha
        << sub.matched << std::endl;
    std::cout << "length == " << sub.length() << std::endl;

    std::csub_match::difference_type dif = std::distance(sub.first, sub.second);
    std::cout << "difference == " << dif << std::endl;

    std::csub_match::iterator first = sub.first;
    std::csub_match::iterator last = sub.second;
    std::cout << "range == " << std::string(first, last)
        << std::endl;
    std::cout << "string == " << sub << std::endl;

    std::csub_match::value_type const *ptr = "aab";
    std::cout << "compare(\"aab\") == "
        << sub.compare(ptr) << std::endl;
    std::cout << "compare(string) == "
        << sub.compare(std::string("AAA")) << std::endl;
    std::cout << "compare(sub) == "
        << sub.compare(sub) << std::endl;

    return (0);
    }
matched == true
length == 3
difference == 3
range == aaa
string == aaa
compare("aab") == -1
compare(string) == 1
compare(sub) == 0

Wymagania

Nagłówek:<regex>

Przestrzeń nazw: std

sub_match::compare

Porównaj podpasuj z sekwencją.

int compare(const sub_match& right) const;
int compare(const basic_string<value_type>& str) const;
int compare(const value_type *ptr) const;

Parametry

Prawy
Podmatch do porównania.

Str
Ciąg do porównania.

ptr
Sekwencja zakończona o wartości null do porównania.

Uwagi

Pierwsza funkcja składowa porównuje dopasowaną sekwencję z dopasowaną sekwencją [first, second) [right.first, right.second). Druga funkcja składowa porównuje dopasowaną sekwencję [first, second) do sekwencji [right.begin(), right.end())znaków . Trzecia funkcja składowa porównuje dopasowaną sekwencję z sekwencją [first, second) [right, right + std::char_traits<value_type>::length(right))znaków .

Każda funkcja zwraca:

wartość ujemna, jeśli pierwsza różna wartość w dopasowanej sekwencji porównuje mniej niż odpowiedni element w sekwencji operandu (określone przez std::char_traits<value_type>::compare), lub jeśli oba mają wspólny prefiks, ale sekwencja docelowa jest dłuższa

zero, jeśli dwa porównaj równy element według elementu i mają taką samą długość

wartość dodatnia w przeciwnym razie

sub_match::d ifference_type

Typ różnicy iteratora.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Uwagi

Typedef jest synonimem .iterator_traits<BidIt>::difference_type

sub_match::iterator

Typ iteratora.

typedef BidIt iterator;

Uwagi

Typedef jest synonimem argumentu Bidittypu szablonu .

sub_match::length

Zwraca długość podmatu.

difference_type length() const;

Uwagi

Funkcja składowa zwraca długość dopasowanej sekwencji lub zero, jeśli nie było dopasowanej sekwencji.

sub_match::matched

Wskazuje, czy dopasowanie zakończyło się pomyślnie.

bool matched;

Uwagi

Element członkowski przechowuje true tylko wtedy, gdy grupa przechwytywania skojarzona z elementem *this była częścią dopasowania wyrażenia regularnego.

sub_match::operator basic_string<value_type>

Rzutuje podpasowanie do ciągu.

operator basic_string<value_type>() const;

Uwagi

Operator elementu członkowskiego zwraca wartość str().

sub_match::str

Konwertuje podmatcz na ciąg.

basic_string<value_type> str() const;

Uwagi

Funkcja składowa zwraca wartość basic_string<value_type>(first, second).

sub_match::value_type

Typ elementu.

typedef typename iterator_traits<BidIt>::value_type value_type;

Uwagi

Typedef jest synonimem .iterator_traits<BidIt>::value_type

Zobacz też

<regex>
sub_match