Classe sub_match
Descrive una sottocorrispondenza.
Sintassi
template <class BidIt>
class sub_match
: public std::pair<BidIt, BidIt>
Parametri
BidIt
Tipo di iteratore per le sottocorrispondenze.
Osservazioni:
Il modello di classe descrive un oggetto che definisce una sequenza di caratteri che corrisponde a un gruppo di acquisizione in una chiamata a regex_match o a regex_search. Oggetti di tipo classe match_results contengono una matrice di questi oggetti, una per ogni gruppo Capture nell'espressione regolare usata nella ricerca.
Se il gruppo di acquisizione non corrisponde al membro matched
dati dell'oggetto contiene false e i due iteratori e second
(ereditati first
dalla base std::pair
) sono uguali. Se il gruppo Capture è corrispondente, matched
contiene true, l'iteratore first
punta al primo carattere nella sequenza di destinazione corrispondente al gruppo Capture e l'iteratore second
punti punta a una posizione dopo l'ultimo carattere nel database di destinazione che corrisponda al gruppo Capture. Per una corrispondenza di lunghezza zero, il membro matched
contiene true, i due iteratori saranno uguali e entrambi punteranno alla posizione della corrispondenza.
Una corrispondenza zero si può verificare quando un gruppo Capture è costituito solamente da un'asserzione o da una ripetizione che consente zero ripetizioni. Ad esempio:
"^" corrisponde alla sequenza di destinazione "a"; l'oggetto sub_match
corrispondente al gruppo Capture 0 contiene gli iteratori che entrambi puntano al primo carattere della sequenza.
"b(a*)b" corrisponde alla sequenza di destinazione "bb"; l'oggetto sub_match
corrispondente al gruppo Capture 1 contiene gli iteratori che entrambi puntano al secondo carattere della sequenza.
Typedef
Nome tipo | Descrizione |
---|---|
difference_type | Tipo di differenza iteratore. |
iterator | Tipo di iteratore. |
value_type | Tipo di un elemento. |
Funzioni membro
Funzione membro | Descrizione |
---|---|
compare | Confronta una sottocorrispondenza rispetto a una sequenza. |
length | Restituisce la lunghezza di una sottocorrispondenza. |
Abbinato | Indica se la corrispondenza ha avuto esito positivo. |
str | Converte una sottocorrispondenza in una stringa. |
Operatori
Operatore | Descrizione |
---|---|
operatore basic_string value_type<> | Esegue il cast di una sottocorrispondenza a una stringa. |
Esempio
// 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
Requisiti
Header:<regex>
Spazio dei nomi: std
sub_match::compare
Confronta una sottocorrispondenza rispetto a una sequenza.
int compare(const sub_match& right) const;
int compare(const basic_string<value_type>& str) const;
int compare(const value_type *ptr) const;
Parametri
right
Sottocorrispondenza da confrontare.
str
Stringa da confrontare.
ptr
Sequenza con terminazione null da confrontare.
Osservazioni:
La prima funzione membro confronta la sequenza corrispondente [first, second)
con la sequenza corrispondente [right.first, right.second)
. La seconda funzione membro confronta la sequenza corrispondente [first, second)
con la sequenza di caratteri [right.begin(), right.end())
. La terza funzione membro confronta la sequenza corrispondente [first, second)
con la sequenza di caratteri [right, right + std::char_traits<value_type>::length(right))
.
Ogni funzione restituisce:
Un valore negativo se il primo valore differente nella sequenza risulta inferiore rispetto all'elemento corrispondente nella sequenza di operandi (come determinato da std::char_traits<value_type>::compare
) o se le due sequenze hanno un prefisso comune, ma la sequenza di destinazione è più lunga
Zero se le due sequenze risultano uguali elemento per elemento e hanno la stessa lunghezza
Un valore positivo in caso contrario
sub_match::d ifference_type
Tipo di differenza iteratore.
typedef typename iterator_traits<BidIt>::difference_type difference_type;
Osservazioni:
typedef è sinonimo di iterator_traits<BidIt>::difference_type
.
sub_match::iterator
Tipo di iteratore.
typedef BidIt iterator;
Osservazioni:
Typedef è un sinonimo dell'argomento di tipo modello Bidit
.
sub_match::length
Restituisce la lunghezza di una sottocorrispondenza.
difference_type length() const;
Osservazioni:
La funzione membro restituisce la lunghezza della sequenza corrispondente oppure zero se non era presente alcuna sequenza corrispondente.
sub_match::matched
Indica se la corrispondenza ha avuto esito positivo.
bool matched;
Osservazioni:
Il membro contiene true
solo se il gruppo Capture associato a *this
fa parte della corrispondenza di espressione regolare.
sub_match::operator basic_string<value_type>
Esegue il cast di una sottocorrispondenza a una stringa.
operator basic_string<value_type>() const;
Osservazioni:
L'operatore membro restituisce str()
.
sub_match::str
Converte una sottocorrispondenza in una stringa.
basic_string<value_type> str() const;
Osservazioni:
La funzione membro restituiscebasic_string<value_type>(first, second)
.
sub_match::value_type
Tipo di un elemento.
typedef typename iterator_traits<BidIt>::value_type value_type;
Osservazioni:
typedef è sinonimo di iterator_traits<BidIt>::value_type
.