std::basic_regex<CharT,Traits>::mark_count
来自cppreference.com
<tbody>
</tbody>
unsigned mark_count() const; |
(C++11 起) | |
返回正则表达式内有标记的子表达式(又称捕获组)个数。
参数
(无)
返回值
正则表达式内有标记的子表达式个数。
异常
可能会抛出由实现定义的异常。
示例
运行此代码
#include <iostream>
#include <regex>
int main()
{
std::regex r1{"abcde"};
std::cout << "r1 有 " << r1.mark_count() << " 个子表达式" << '\n';
// 期待: 0
std::regex r2{"ab(c)de"};
std::cout << "r2 有 " << r2.mark_count() << " 个子表达式" << '\n';
// 期待: 1
std::regex r3{"a(bc)d(e)"};
std::cout << "r3 有 " << r3.mark_count() << " 个子表达式" << '\n';
// 期待: 2
// 嵌套的子表达式
std::regex r4{"abc(de(fg))"};
std::cout << "r4 有 " << r4.mark_count() << " 个子表达式" << '\n';
// 期待: 2
// 转义的括号
std::regex r5{"a(bc\\(\\)de)"};
std::cout << "r5 有 " << r5.mark_count() << " 个子表达式" << '\n';
// 期待: 1
// 使用 nosubs 标志
std::regex r6 {"ab(c)de", std::regex_constants::nosubs};
std::cout << "r6 有 " << r6.mark_count() << " 个子表达式" << '\n';
// Expected: 0
}
输出:
r1 有 0 个子表达式
r2 有 1 个子表达式
r3 有 2 个子表达式
r4 有 2 个子表达式
r5 有 1 个子表达式
r6 有 0 个子表达式