sub_match クラス
更新 : 2007 年 11 月
サブマッチを表します。
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::tr1