Espacios de nombres
Variantes

std::basic_regex::mark_count

De cppreference.com
 
 
Biblioteca de expresiones regulares
Clases
(C++11)
Algoritmos
Iteradores
Excepciones
Rasgos
Constantes
(C++11)
Gramática de las expresiones regulares
 
 
<tbody> </tbody>
unsigned mark_count() const;
(desde C++11)

Devuelve el número de subexpresiones marcadas (también conocidas como grupos de captura) dentro de la expresión regular.

Parámetros

(Ninguno)

Valor de retorno

El número de subexpresiones marcadas dentro de la expresión regular.

Excepciones

Puede lanzar excepciones definidas por la implementación.

Ejemplo

#include <iostream>
#include <regex>

int main()
{    
    std::regex r1{"abcde"};
    std::cout << "r1 tiene " << r1.mark_count() << " subexpresiones" <<  '\n';
    //  Esperado: 0
    
    std::regex r2{"ab(c)de"};
    std::cout << "r2 tiene " << r2.mark_count() << " subexpresiones" << '\n';
    //  Esperado: 1
    
    std::regex r3{"a(bc)d(e)"}; 
    std::cout << "r3 tiene " << r3.mark_count() << " subexpresiones" << '\n';
    //  Esperado: 2
    
    //  subexpresiones anidadas
    std::regex r4{"abc(de(fg))"};
    std::cout << "r4 tiene " << r4.mark_count() << " subexpresiones" << '\n';
    //  Esperado: 2
    
    //  paréntesis escapados
    std::regex r5{"a(bc\\(\\)de)"};
    std::cout << "r5 tiene " << r5.mark_count() << " subexpresiones" << '\n';
    //  Esperado: 1
    
    //  usando indicador nosubs
    std::regex r6 {"ab(c)de", std::regex_constants::nosubs};
    std::cout << "r6 tiene " << r6.mark_count() << " subexpresiones" << '\n';
    //  Esperado: 0
}

Salida:

r1 tiene 0 subexpresiones
r2 tiene 1 subexpresiones
r3 tiene 2 subexpresiones
r4 tiene 2 subexpresiones
r5 tiene 1 subexpresiones
r6 tiene 0 subexpresiones