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

從 cppreference.com
< cpp‎ | regex‎ | basic regex
 
 
 
正則表達式庫
(C++11)
算法
迭代器
異常
特徵
常量
(C++11)
正則表達式文法
 
 
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 个子表达式