Condividi tramite


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.

Vedi anche

<regex>
sub_match