Compartilhar via


Classe sub_match

Descreve uma subcorrespondência.

Sintaxe

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

Parâmetros

BidIt
O tipo de iterador para subcorrespondências.

Comentários

O modelo de classe descreve um objeto que designa uma sequência de caracteres que corresponde a um grupo de captura em uma chamada para regex_match ou regex_search. Objetos do tipo Classe match_results contêm uma matriz desses objetos, uma para cada grupo de captura na expressão regular que foi usada na pesquisa.

Se o grupo de captura não tiver correspondência no membro de dados do objeto, matched será falso e os dois iteradores first e second (herdados de std::pair base) serão iguais. Se o grupo de captura for correspondido, matched será verdadeiro, o iterador first apontará para o primeiro caractere na sequência de destino que corresponde ao grupo de captura e o iterador second apontará para uma posição após o último caractere na sequência de destino que corresponde ao grupo de captura. Para uma correspondência de comprimento zero, o membro matched será verdadeiro, os dois iteradores serão iguais e ambos apontarão para a posição da correspondência.

Uma correspondência de comprimento zero pode ocorrer quando um grupo de captura consiste exclusivamente em uma declaração ou em uma repetição que permite repetições de zero. Por exemplo:

“^” corresponde à sequência de destino “a”; o objeto sub_match correspondente ao grupo de captura 0 contém iteradores que apontam para o primeiro caractere na sequência.

“b(a*)b” corresponde à sequência de destino “bb”; o objeto sub_match correspondente ao grupo de captura 1 contém iteradores que apontam para o segundo caractere na sequência.

Typedefs

Nome do tipo Descrição
difference_type O tipo de uma diferença de iterador.
iterator O tipo de um iterador.
value_type O tipo de um elemento.

Funções de membro

Função de membro Descrição
compare Compare a subcorrespondência com uma sequência.
length Retorna o tamanho de uma subcorrespondência.
matched Indica se a correspondência teve êxito.
str Converte a subcorrespondência em uma cadeia de caracteres.

Operadores

Operador Descrição
operator basic_string<value_type> Molda a subcorrespondência em uma cadeia de caracteres.

Exemplo

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

Requisitos

Cabeçalho:<regex>

Namespace: std

sub_match::comparar

Compare a subcorrespondência com uma sequência.

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

Parâmetros

direita
A subcorrespondência com a qual comparar.

str
A cadeia de caracteres a ser comparada com .

ptr
A sequência com terminação nula com a qual comparar.

Comentários

A primeira função membro compara a sequência correspondente [first, second) à sequência correspondente [right.first, right.second). A segunda função membro compara a sequência correspondente [first, second) à sequência de caracteres [right.begin(), right.end()). A terceira função membro compara a sequência correspondente [first, second) à sequência de caracteres [right, right + std::char_traits<value_type>::length(right)).

Cada função retorna:

um valor negativo se o primeiro valor diferente na sequência correspondente for comparado como menor que o elemento correspondente na sequência de operando (conforme determinado por std::char_traits<value_type>::compare) ou se os dois tiverem um prefixo comum, mas a sequência de destino for mais longa

zero se os dois forem comparados como iguais elemento por elemento e tiverem o mesmo tamanho

caso contrário, um valor positivo

sub_match::d tipo_de_ifferência

O tipo de uma diferença de iterador.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Comentários

O typedef é um sinônimo de iterator_traits<BidIt>::difference_type.

sub_match::iterador

O tipo de um iterador.

typedef BidIt iterator;

Comentários

O typedef é um sinônimo do argumento de tipo de modelo Bidit.

sub_match::comprimento

Retorna o tamanho de uma subcorrespondência.

difference_type length() const;

Comentários

A função membro retorna o tamanho da sequência correspondente ou zero se não houve nenhuma sequência correspondente.

sub_match::combinado

Indica se a correspondência teve êxito.

bool matched;

Comentários

O membro conterá true somente se o grupo de captura associado a *this fazia parte da correspondência da expressão regular.

sub_match::operator basic_string<value_type>

Molda a subcorrespondência em uma cadeia de caracteres.

operator basic_string<value_type>() const;

Comentários

O operador de membro retorna str().

sub_match::str

Converte a subcorrespondência em uma cadeia de caracteres.

basic_string<value_type> str() const;

Comentários

A função membro retorna basic_string<value_type>(first, second).

sub_match::value_type

O tipo de um elemento.

typedef typename iterator_traits<BidIt>::value_type value_type;

Comentários

O typedef é um sinônimo de iterator_traits<BidIt>::value_type.

Confira também

<regex>
sub_match