Namespaces
Variants

std:: sub_match

From cppreference.net
Regular expressions library
Classes
sub_match
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
Definido en el encabezado <regex>
template < class BidirIt >
class sub_match ;
(desde C++11)

La plantilla de clase std::sub_match es utilizada por el motor de expresiones regulares para denotar secuencias de caracteres coincidentes con subexpresiones marcadas. Una coincidencia es un par [ begin , end ) dentro del rango objetivo que coincide con la expresión regular, pero con funciones observadoras adicionales para mejorar la claridad del código.

Solo el constructor por defecto es públicamente accesible. Las instancias de std::sub_match normalmente se construyen y se llenan como parte de un contenedor std::match_results durante el procesamiento de uno de los algoritmos de expresiones regulares.

Las funciones miembro retornan valores predeterminados definidos a menos que el matched miembro sea true .

std::sub_match hereda de std:: pair < BidirIt, BidirIt > , aunque no puede tratarse como un objeto std::pair porque funciones miembro como la asignación no funcionarán como se espera.

Contenidos

Requisitos de tipo

-
BidirIt debe cumplir con los requisitos de LegacyBidirectionalIterator .

Especializaciones

Se proporcionan varias especializaciones para tipos comunes de secuencias de caracteres:

Definido en el encabezado <regex>
Tipo Definición
std::csub_match std :: sub_match < const char * >
std::wcsub_match std :: sub_match < const wchar_t * >
std::ssub_match std :: sub_match < std :: string :: const_iterator >
std::wssub_match std :: sub_match < std :: wstring :: const_iterator >

Tipos anidados

Tipo Definición
iterator BidirIt
value_type std:: iterator_traits < BidirIt > :: value_type
difference_type std:: iterator_traits < BidirIt > :: difference_type
string_type std:: basic_string < value_type >

Miembros de datos

Miembro Descripción
bool matched
si esta coincidencia fue exitosa
(objeto miembro público)

Heredado de std:: pair

BidirIt first
inicio de la secuencia de coincidencia
(objeto miembro público)
BidirIt second
fin de la secuencia de coincidencia (posición posterior al último elemento)
(objeto miembro público)

Funciones miembro

construye el objeto de coincidencia
(función miembro pública)
Observadores
retorna la longitud de la coincidencia (si existe)
(función miembro pública)
convierte al tipo de cadena subyacente
(función miembro pública)
compara la subsecuencia coincidente (si existe)
(función miembro pública)
Modificadores
intercambia los contenidos
(función miembro pública)

Funciones no miembro

(eliminado en C++20) (eliminado en C++20) (eliminado en C++20) (eliminado en C++20) (eliminado en C++20) (C++20)
compara un sub_match con otro sub_match , una cadena, o un carácter
(plantilla de función)
imprime la subsecuencia de caracteres coincidentes
(plantilla de función)

Ejemplo

#include <cassert>
#include <iostream>
#include <regex>
#include <string>
int main()
{
    std::string sentence{"Friday the thirteenth."};
    const std::regex re{"([A-z]+) ([a-z]+) ([a-z]+)"};
    std::smatch words;
    std::regex_search(sentence, words, re);
    std::cout << std::boolalpha;
    for (const auto& m : words)
    {
        assert(m.matched);
        std::cout << "m: [" << m << "], m.length(): " << m.length() << ", "
                     "*m.first: '" << *m.first << "', "
                     "*m.second: '" << *m.second << "'\n";
    }
}

Salida:

m: [Friday the thirteenth], m.length(): 21, *m.first: 'F', *m.second: '.'
m: [Friday], m.length(): 6, *m.first: 'F', *m.second: ' '
m: [the], m.length(): 3, *m.first: 't', *m.second: ' '
m: [thirteenth], m.length(): 10, *m.first: 't', *m.second: '.'

Véase también

itera a través de las subexpresiones especificadas dentro de todas las coincidencias de regex en una cadena dada o a través de subcadenas no coincidentes
(plantilla de clase)