Partager via


sub_match, classe

Décrit une sous-correspondance.

Syntaxe

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

Paramètres

BidIt
Type d'itérateur pour les sous-correspondances.

Notes

Le modèle de classe décrit un objet qui désigne une séquence de caractères correspondant à un groupe de capture dans un appel à regex_match ou à regex_search. Les objets de type de classe match_results contiennent un tableau de ces objets, un pour chaque groupe de capture de l’expression régulière utilisée dans la recherche.

Si le groupe de capture n’a pas été mis en correspondance avec le membre matched de données de l’objet contient false, et les deux itérateurs et second (hérités first de la basestd::pair) sont égaux. Si le groupe de capture a une correspondance, matched a la valeur true et l’itérateur first pointe vers le premier caractère de la séquence cible correspondant au groupe de capture. En outre, l’itérateur second pointe vers la position située après le dernier caractère de la séquence cible correspondant au groupe de capture. Pour une correspondance de longueur nulle, le membre matched a la valeur true, les deux itérateurs sont égaux, et les deux pointent vers la position de la correspondance.

Une correspondance de longueur nulle peut se produire quand un groupe de capture se compose uniquement d’une assertion, ou d’une répétition n’autorisant aucune répétition. Par exemple :

« ^ » correspond à la séquence cible « a ». L’objet sub_match correspondant au groupe de capture 0 contient les itérateurs qui pointent vers le premier caractère de la séquence.

« b(a*)b » correspond à la séquence cible « bb ». L’objet sub_match correspondant au groupe de capture 1 contient les itérateurs qui pointent vers le second caractère de la séquence.

Typedefs

Nom de type Description
difference_type Type d’une différence d’itérateur.
iterator Type d'un itérateur.
value_type Type d’un élément.

Fonctions Membre

Fonction membre Description
compare Comparer une sous-correspondance à une séquence.
length Retourne la longueur d'une sous-correspondance.
Correspondait Indique si la correspondance a réussi.
str Convertit la sous-correspondance en chaîne.

Opérateurs

Opérateur Description
opérateur basic_string value_type<> Effectue un cast de la sous-correspondance en chaîne.

Exemple

// 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

Spécifications

Header :<regex>

Espace de noms : std

sub_match ::compare

Comparer une sous-correspondance à une séquence.

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

Paramètres

right
Sous-correspondance avec laquelle effectuer la comparaison.

str
Chaîne de comparaison.

ptr
Séquence terminée par un caractère null avec laquelle effectuer la comparaison.

Notes

La première fonction membre compare la séquence mise en correspondance [first, second) à la séquence mise en correspondance [right.first, right.second). La deuxième fonction membre compare la séquence mise en correspondance [first, second) à la séquence de caractères [right.begin(), right.end()). La troisième fonction membre compare la séquence mise en correspondance [first, second) à la séquence de caractères [right, right + std::char_traits<value_type>::length(right)).

Chaque fonction retourne :

une valeur négative si la première valeur différente dans la séquence mise en correspondance est inférieure à l'élément correspondant dans la séquence d'opérande (comme déterminé par std::char_traits<value_type>::compare) ou si les deux valeurs ont un préfixe commun mais que la séquence cible est plus longue ;

zéro si les valeurs comparées sont égales élément par élément et qu'elles ont la même longueur ;

une valeur positive dans les autres cas.

sub_match ::d ifference_type

Type d’une différence d’itérateur.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Notes

Le typedef est un synonyme de iterator_traits<BidIt>::difference_type.

sub_match ::iterator

Type d'un itérateur.

typedef BidIt iterator;

Notes

Le typedef est un synonyme de l'argument de type de modèle Bidit.

sub_match ::length

Retourne la longueur d'une sous-correspondance.

difference_type length() const;

Notes

La fonction membre retourne la longueur de la séquence mise en correspondance, ou zéro en l'absence de séquence mise en correspondance.

sub_match ::matched

Indique si la correspondance a réussi.

bool matched;

Notes

Le membre contient true seulement si le groupe de capture associé à *this faisait partie de la correspondance d’expression régulière.

sub_match::operator basic_string<value_type>

Effectue un cast de la sous-correspondance en chaîne.

operator basic_string<value_type>() const;

Notes

L’opérateur membre retourne str().

sub_match ::str

Convertit la sous-correspondance en chaîne.

basic_string<value_type> str() const;

Notes

La fonction membre retourne basic_string<value_type>(first, second).

sub_match ::value_type

Type d’un élément.

typedef typename iterator_traits<BidIt>::value_type value_type;

Notes

Le typedef est un synonyme de iterator_traits<BidIt>::value_type.

Voir aussi

<regex>
sub_match