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 Bidit
typu 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