共用方式為


sub_match 類別

描述子相符項目。

語法

template <class BidIt>
class sub_match
    : public std::pair<BidIt, BidIt>

參數

BidIt
子相符項目的迭代器類型。

備註

類別範本描述物件,指定符合呼叫 regex_matchregex_search擷取群組的字元序列。 類型為 match_results 類別的物件會保存這些物件的陣列,每個陣列分別代表用於搜尋之規則運算式中的一個擷取群組。

如果擷取群組不符合對象的數據成員 matched 會保留 false,且兩個反覆運算器和 first second (繼承自基底 std::pair) 相等。 如果擷取群組相符,則 matched 為 true,迭代器 first 會指向目標序列中符合擷取群組的第一個字元,而 second 會指向目標序列中符合擷取群組之最後一個字元後的一個位置。 對於長度為零的比對,成員 matched 會保留 true,兩個反覆運算器會相等,而且兩者都會指向相符專案的位置。

當擷取群組只包含一個判斷提示,或包含一個允許重複零的重複項目時,可能會發生零長度相符的情況。 例如:

"^" 與目標序列 "a" 相符;對應至擷取群組 0 的 sub_match 物件會保存同時指向序列中第一個字元的兩個迭代器。

"b(a*)b" 與目標序列 "bb" 相符;對應至擷取群組 1 的 sub_match 物件會保存同時指向序列中第二個字元的兩個迭代器。

Typedefs

類型名稱 描述
difference_type 迭代器差值的類型。
iterator 迭代器的類型。
value_type 元素的類型。

成員函式

成員函數 描述
compare 比較子相符項目與序列。
length 傳回子相符項目的長度。
匹配 指出比對是否成功。
str 將子對應轉換成字串。

操作員

運算子 描述
運算子basic_string<value_type> 將子相符項目轉換成字串。

範例

// std__regex__sub_match.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

int main()
    {
    std::regex rx("c(a*)|(b)");
    std::cmatch mr;

    std::regex_search("xcaaay", mr, rx);

    std::csub_match sub = mr[1];
    std::cout << "matched == " << std::boolalpha
        << sub.matched << std::endl;
    std::cout << "length == " << sub.length() << std::endl;

    std::csub_match::difference_type dif = std::distance(sub.first, sub.second);
    std::cout << "difference == " << dif << std::endl;

    std::csub_match::iterator first = sub.first;
    std::csub_match::iterator last = sub.second;
    std::cout << "range == " << std::string(first, last)
        << std::endl;
    std::cout << "string == " << sub << std::endl;

    std::csub_match::value_type const *ptr = "aab";
    std::cout << "compare(\"aab\") == "
        << sub.compare(ptr) << std::endl;
    std::cout << "compare(string) == "
        << sub.compare(std::string("AAA")) << std::endl;
    std::cout << "compare(sub) == "
        << sub.compare(sub) << std::endl;

    return (0);
    }
matched == true
length == 3
difference == 3
range == aaa
string == aaa
compare("aab") == -1
compare(string) == 1
compare(sub) == 0

需求

Header:<regex>

命名空間:std

sub_match::compare

比較子相符項目與序列。

int compare(const sub_match& right) const;
int compare(const basic_string<value_type>& str) const;
int compare(const value_type *ptr) const;

參數

right
要比較子相符項目。

str
要比較的字串。

ptr
要比較的以 null 終止的序列。

備註

第一個成員函式會比較比對序列 [first, second) 與比對序列 [right.first, right.second)。 第二個成員函式會比較比對序列 [first, second) 與字元序列 [right.begin(), right.end())。 第三個成員函式會比較比對序列 [first, second) 與字元序列 [right, right + std::char_traits<value_type>::length(right))

每個函式會傳回:

如果比對序列中的第一個不同的值小於運算元序列中的對應元素 (由 std::char_traits<value_type>::compare 決定),或如果兩者有共同的前置詞、但目標序列較長,則為負值

如果兩者的比較元素相等,且具有相同長度,則為零

否則為正值。

sub_match::d ifference_type

迭代器差值的類型。

typedef typename iterator_traits<BidIt>::difference_type difference_type;

備註

此 typedef 是 iterator_traits<BidIt>::difference_type的同義字。

sub_match::iterator

迭代器的類型。

typedef BidIt iterator;

備註

typedef 是範本類型引數 Bidit 的同義字。

sub_match::length

傳回子相符項目的長度。

difference_type length() const;

備註

成員函式會傳回相符序列的長度,如果沒有相符序列則傳回零。

sub_match::matched

指出比對是否成功。

bool matched;

備註

只有與 true 相關聯的擷取群組曾經是規則運算式比對的一部分時,成員才保留 *this

sub_match::operator basic_string<value_type>

將子相符項目轉換成字串。

operator basic_string<value_type>() const;

備註

此成員運算子會傳回 str()

sub_match::str

將子對應轉換成字串。

basic_string<value_type> str() const;

備註

此成員函式會傳回 basic_string<value_type>(first, second)

sub_match::value_type

元素的類型。

typedef typename iterator_traits<BidIt>::value_type value_type;

備註

此 typedef 是 iterator_traits<BidIt>::value_type的同義字。

另請參閱

<regex>
sub_match