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
.