Namespaces
Variants

std::basic_regex<CharT,Traits>:: mark_count

From cppreference.net
Regular expressions library
Classes
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
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.

Contenidos

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 el flag 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