Compartir vía


sub_match (Clase)

Describe a una subcoincidencia.

Sintaxis

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

Parámetros

BidIt
El tipo de iterador para subcoincidencias.

Comentarios

En la plantilla de clase se describe un objeto que designa una secuencia de caracteres que coinciden con un grupo de capturas en una llamada a regex_match o regex_search. Los objetos del tipo match_results (clase) contienen una matriz de estos objetos, uno para cada grupo de capturas en la expresión regular usada en la búsqueda.

Si no hay coincidencia con el grupo de capturas, el miembro de datos matched del objeto se considera false, y los dos iteradores first y second (heredados de la base std::pair) son iguales. Si hay coincidencia con el grupo de capturas, matched es true, el iterador first apunta al primer carácter de la secuencia de destino que coincide con el grupo de capturas y el iterador second apunta a una posición más allá del último carácter de la secuencia de destino que coincide con el grupo de capturas. Para una coincidencia de longitud cero, el miembro matched es true, mientras que los dos iteradores son iguales y apuntan a la posición de la coincidencia.

Una coincidencia de longitud cero puede aparecer cuando un grupo de capturas solo se compone de una aserción o de una repetición que permite que se repita cero. Por ejemplo:

"^" coincide con la secuencia "a" de destino; el objeto sub_match correspondiente al grupo de capturas 0 contiene iteradores que apuntan al primer carácter de la secuencia.

"b(a*)b" coincide con la secuencia "bb" de destino; el objeto sub_match correspondiente al grupo de capturas 1 contiene iteradores que apuntan al segundo carácter de la secuencia.

Typedefs

Nombre de tipo Descripción
difference_type El tipo de diferencia de un iterador.
iterator Tipo de un iterador.
value_type El tipo de un elemento.

Funciones miembro

Función de miembro Descripción
compare Comparar la subcoincidencia con una secuencia.
length Devuelve la longitud de una subcoincidencia.
matched Indica si la coincidencia se realizó correctamente.
str Convierte la subcoincidencia a una cadena.

Operadores

Operador Descripción
operator basic_string<value_type> Convierte la subcoincidencia en una cadena.

Ejemplo

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

Encabezado:<regex>

Espacio de nombres: std

sub_match::compare

Comparar la subcoincidencia con una secuencia.

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

right
Subcoincidencia con la que se va comparar.

str
Cadena con la que se va a comparar.

ptr
La secuencia terminada en un valor nulo con la que se va a comparar.

Comentarios

La primera función miembro compara la secuencia coincidente [first, second) con la secuencia coincidente [right.first, right.second). La segunda función miembro compara la secuencia coincidente [first, second) con la secuencia de caracteres [right.begin(), right.end()). La tercera función miembro compara la secuencia coincidente [first, second) con la secuencia de caracteres [right, right + std::char_traits<value_type>::length(right)).

Cada función devuelve lo siguiente:

un valor negativo si el primer valor diferente de la secuencia coincidente se es menor que el elemento correspondiente de la secuencia de operandos (según lo determinado por std::char_traits<value_type>::compare), o si los dos tienen un prefijo común pero la secuencia de destino es más larga

cero si los dos son iguales elemento a elemento y tienen la misma longitud

un valor positivo en caso contrario

sub_match::d ifference_type

El tipo de diferencia de un iterador.

typedef typename iterator_traits<BidIt>::difference_type difference_type;

Comentarios

La definición de tipo es un sinónimo de iterator_traits<BidIt>::difference_type.

sub_match::iterator

Tipo de un iterador.

typedef BidIt iterator;

Comentarios

El tipo es un sinónimo del argumento de tipo de plantilla Bidit.

sub_match::length

Devuelve la longitud de una subcoincidencia.

difference_type length() const;

Comentarios

La función miembro devuelve la longitud de la secuencia coincidente, o cero si no se ha producido ninguna secuencia coincidente.

sub_match::matched

Indica si la coincidencia se realizó correctamente.

bool matched;

Comentarios

El miembro contiene true solo si el grupo de capturas asociado a *this formaba parte de la coincidencia de expresión regular.

sub_match::operator basic_string<value_type>

Convierte la subcoincidencia en una cadena.

operator basic_string<value_type>() const;

Comentarios

El operador miembro devuelve str().

sub_match::str

Convierte la subcoincidencia a una cadena.

basic_string<value_type> str() const;

Comentarios

La función miembro devuelve basic_string<value_type>(first, second).

sub_match::value_type

El tipo de un elemento.

typedef typename iterator_traits<BidIt>::value_type value_type;

Comentarios

La definición de tipo es un sinónimo de iterator_traits<BidIt>::value_type.

Consulte también

<regex>
sub_match