次の方法で共有


sub_match クラス

サブマッチを表します。

template<class BidIt>
    class sub_match
        : public std::pair<BidIt, BidIt> {
public:
    bool matched;
    int compare(const sub_match& right) const;
    int compare(const basic_string<value_type>& right) const;
    int compare(const value_type *right) const;
    difference_type length() const;
    operator basic_string<value_type>() const;
    basic_string<value_type> str() const;
    typedef typename iterator_traits<BidIt>::value_type value_type;
    typedef typename iterator_traits<BidIt>::difference_type difference_type;
    typedef BidIt iterator;
    };

パラメーター

  • BidIt
    サブマッチの反復子の型。

解説

このテンプレート クラスは、regex_match 関数 または regex_search 関数 の呼び出しで、キャプチャ グループと一致した文字のシーケンスを指定するオブジェクトを表します。このオブジェクトは、検索に使用された正規表現の各キャプチャ グループに対応しており、match_results クラス 型のオブジェクトは、これらのオブジェクトの配列を保持します。

キャプチャ グループとの一致が存在しなかった場合、オブジェクトのデータ メンバー matched は false を保持し、基本クラス std::pair から継承される 2 つの反復子 first と second は等価になります。キャプチャ グループとの一致が存在した場合、matched は true を保持します。このとき、反復子 first は、キャプチャ グループと一致したターゲット シーケンスの先頭文字を指し示し、反復子 second は、キャプチャ グループと一致したターゲット シーケンスの最後の文字の次の位置を指し示します。注意する必要があるのは、長さ 0 の一致の場合です。この場合、メンバー matched は true を保持し、2 つの反復子は等価になります。どちらも、その一致の位置を指し示します。

長さ 0 の一致は、キャプチャ グループがアサーションのみで構成される場合や、ゼロ回の繰り返しが許容されるようなパターンで発生します。次に例を示します。

"^" は、ターゲット シーケンス "a" と一致します。このとき、キャプチャ グループ 0 に対応する sub_match オブジェクトは、両方がシーケンスの先頭文字を指す反復子を保持します。

"b(a*)b" は、ターゲット シーケンス "bb" と一致します。このとき、キャプチャ グループ 1 に対応する sub_match オブジェクトは、両方がシーケンスの 2 文字目を指す反復子を保持します。

必要条件

ヘッダー : <regex>

名前空間: std

参照

関連項目

<regex>

sub_match クラス

regex_match 関数

regex_search 関数

その他の技術情報

<regex> メンバー