std::basic_regex<CharT,Traits>::mark_count
從 cppreference.com
< cpp | regex | basic regex
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 个子表达式