Scroll to navigation

std::basic_regex::mark_count(3) C++ Standard Libary std::basic_regex::mark_count(3)

NAME

std::basic_regex::mark_count - std::basic_regex::mark_count

Synopsis


unsigned mark_count() const; (since C++11)


Returns the number of marked sub-expressions (also known as capture groups) within
the regular expression.

Parameters


(none)

Return value


The number of marked sub-expressions within the regular expression.

Exceptions


May throw implementation-defined exceptions.

Example

// Run this code


#include <iostream>
#include <regex>


int main()
{
std::regex r1{"abcde"};
std::cout << "r1 has " << r1.mark_count() << " subexpressions" << '\n';
// Expected: 0


std::regex r2{"ab(c)de"};
std::cout << "r2 has " << r2.mark_count() << " subexpressions" << '\n';
// Expected: 1


std::regex r3{"a(bc)d(e)"};
std::cout << "r3 has " << r3.mark_count() << " subexpressions" << '\n';
// Expected: 2


// Nested sub-expressions
std::regex r4{"abc(de(fg))"};
std::cout << "r4 has " << r4.mark_count() << " subexpressions" << '\n';
// Expected: 2


// Escaped parentheses
std::regex r5{"a(bc\\(\\)de)"};
std::cout << "r5 has " << r5.mark_count() << " subexpressions" << '\n';
// Expected: 1


// Using nosubs flag
std::regex r6{"ab(c)de", std::regex_constants::nosubs};
std::cout << "r6 has " << r6.mark_count() << " subexpressions" << '\n';
// Expected: 0
}

Output:


r1 has 0 subexpressions
r2 has 1 subexpressions
r3 has 2 subexpressions
r4 has 2 subexpressions
r5 has 1 subexpressions
r6 has 0 subexpressions

2024.06.10 http://cppreference.com