regex_token_iterator 構造体テンプレート
-
template<typename BidiIter>
struct regex_token_iterator
概要
// ヘッダ:<boost/xpressive/regex_token_iterator.hpp
> template<typename BidiIter> structregex_token_iterator
{ // 型 typedef basic_regex< BidiIter > regex_type; typedef iterator_value< BidiIter >::type char_type; typedef sub_match< BidiIter > value_type; typedef std::ptrdiff_t difference_type; typedef value_type const * pointer; typedef value_type const & reference; typedef std::forward_iterator_tag iterator_category; // 構築、コピー、解体regex_token_iterator
();regex_token_iterator
(BidiIter, BidiIter,basic_regex
< BidiIter > const &); template<typename LetExpr>regex_token_iterator
(BidiIter, BidiIter,basic_regex
< BidiIter > const &,unspecified
); template<typename Subs>regex_token_iterator
(BidiIter, BidiIter,basic_regex
< BidiIter > const &, Subs const &, regex_constants::match_flag_type = regex_constants::match_default); template<typename Subs, typename LetExpr>regex_token_iterator
(BidiIter, BidiIter,basic_regex
< BidiIter > const &, Subs const &,unspecified
, regex_constants::match_flag_type = regex_constants::match_default);regex_token_iterator
(regex_token_iterator
< BidiIter > const &);regex_token_iterator
< BidiIter >&operator=
(regex_token_iterator
< BidiIter > const &); // 公開メンバ関数 value_type const &operator*
() const; value_type const *operator->
() const;regex_token_iterator
BidiIter > &operator++
();regex_token_iterator
BidiIter >operator++
(int); };
説明
regex_token_iterator
構築、コピー、解体の公開演算
-
regex_token_iterator()
- 事後条件
*this がシーケンスイテレータの終端。
-
regex_token_iterator(BidiIter begin, BidiIter end, basic_regex<BidiIter> const &rex)
- パラメータ
begin -- 検索する文字範囲の先頭。
end -- 検索する文字範囲の終端。
rex -- 検索する正規表現パターン。
- 要件
[begin,end)
が有効な範囲。
-
template<typename LetExpr>
regex_token_iterator(BidiIter begin, BidiIter end, basic_regex<BidiIter> const &rex, unspecified args) - パラメータ
begin -- 検索する文字範囲の先頭。
end -- 検索する文字範囲の終端。
rex -- 検索する正規表現パターン。
args -- 意味アクションに対して引数束縛した
let
式。
- 要件
[begin,end)
が有効な範囲。
-
template<typename Subs>
regex_token_iterator(BidiIter begin, BidiIter end, basic_regex<BidiIter> const &rex, Subs const &subs, regex_constants::match_flag_type flags = regex_constants::match_default) - パラメータ
begin -- 検索する文字範囲の先頭。
end -- 検索する文字範囲の終端。
rex -- 検索する正規表現パターン。
subs -- トークンとして扱う部分マッチを表す整数範囲。
flags -- シーケンスに対して正規表現がどのようにマッチするかを制御する省略可能なマッチフラグ(
match_flag_type
を見よ)。
- 要件
[begin,end)
が有効な範囲。- 要件
subs
が-1
以上の整数、あるいは全要素が-1
以上の整数である配列か空でないstd::vector<>
のいずれか。
-
template<typename Subs, typename LetExpr>
regex_token_iterator(BidiIter begin, BidiIter end, basic_regex<BidiIter> const &rex, Subs const &subs, unspecified args, regex_constants::match_flag_type flags = regex_constants::match_default) - パラメータ
begin -- 検索する文字範囲の先頭。
end -- 検索する文字範囲の終端。
rex -- 検索する正規表現パターン。
subs -- トークンとして扱う部分マッチを表す整数範囲。
flags -- シーケンスに対して正規表現がどのようにマッチするかを制御する省略可能なマッチフラグ(
match_flag_type
を見よ)。
- 要件
[begin,end)
が有効な範囲。- 要件
subs
が-1
以上の整数、あるいは全要素が-1
以上の整数である配列か空でないstd::vector<>
のいずれか。
-
regex_token_iterator(regex_token_iterator<BidiIter> const &that)
- 事後条件
*this == that
regex_token_iterator
公開メンバ関数
-
value_type const &operator*() const
-
value_type const *operator->() const
-
regex_token_iterator<BidiIter> &operator++()
N == -1 であれば *this をシーケンスイテレータの終端と同値に設定する。1 N + 1 < subs.size() であれば
N
を1
増やし、結果を((subs[N] == -1) ? value_type(what.prefix().str()) : value_type(what[subs[N]].str()))
と同値に設定する。それ以外の場合は、what.prefix().first != what[0].second かつmatch_prev_avail
要素がフラグに設定されていなければ設定する。次に regex_search(what[0].second, end, what, *pre, flags) を呼び出したのと同様の振る舞いをする。ただし以下の点については振る舞いが異なる。前回見つかったマッチがゼロ幅(what[0].length() == 0)の場合、what[0].second を先頭とする非ゼロ幅マッチを探索する。これが失敗し、かつ what[0].second != suffix().second である場合に限り what[0].second + 1 を先頭とするマッチ(これもゼロ幅かもしれない)を探索する。そのようなマッチが見つかった場合はN
を0
に設定し、結果を((subs[N] == -1) ? value_type(what.prefix().str()) : value_type(what[subs[N]].str()))
と同値に設定する。マッチが見つからなかった場合はlast_end
を最後に見つかったマッチの終端に設定し、last_end != end かつ subs[0] == -1 であればN
を-1
に、結果を value_type(last_end, end) と同値に設定する。それ以外の場合は *this をシーケンスの終端イテレータと等値に設定する。
-
regex_token_iterator<BidiIter> operator++(int)
- 1
訳注
N
の説明は原文にもありませんが、構築直後は 0 である内部変数です。