std::basic_regex<CharT,Traits>::mark_count
From cppreference.com
 
 
 < cpp | regex | basic regex 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Text processing library 
 
 
 
 
 
 
 
 
 Regular expressions library (C++11)
 Formatting library (C++20)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++26)
Regular expressions library 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Classes
(C++11)
(C++11)
(C++11)
 Algorithms
(C++11)
(C++11)
(C++11)
 Iterators
(C++11)
(C++11)
 Exceptions
(C++11)
 Traits
(C++11)
 Constants
(C++11)
(C++11)
(C++11)
 Regex Grammar
(C++11)
std::basic_regex 
 
 Member Functions
 Observers
basic_regex::mark_count
 Locale
 Modifiers
 Non-member Functions
 Deduction guides (C++17)
unsigned mark_count() const;
 
 (since C++11) 
Returns the number of marked sub-expressions (also known as capture groups) within the regular expression.
Contents
[edit] Parameters
(none)
[edit] Return value
The number of marked sub-expressions within the regular expression.
[edit] Exceptions
May throw implementation-defined exceptions.
[edit] 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