regex_iterator 構造体テンプレート

template<typename BidiIter>
struct regex_iterator

概要

// ヘッダ:<boost/xpressive/regex_iterator.hpp>

template<typename BidiIter>
struct regex_iterator {
  // 型
  typedef basic_regex< BidiIter >               regex_type;
  typedef match_results< BidiIter >             value_type;
  typedef iterator_difference< BidiIter >::type difference_type;
  typedef value_type const *                    pointer;
  typedef value_type const &                    reference;
  typedef std::forward_iterator_tag             iterator_category;

  // 構築、コピー、解体
  regex_iterator();
  regex_iterator(BidiIter, BidiIter, basic_regex< BidiIter > const &,
                 regex_constants::match_flag_type = regex_constants::match_default);
  template<typename LetExpr>
    regex_iterator(BidiIter, BidiIter, basic_regex< BidiIter > const &,
                   unspecified,
                   regex_constants::match_flag_type = regex_constants::match_default);
  regex_iterator(regex_iterator< BidiIter > const &);
  regex_iterator< BidiIter >& operator=(regex_iterator< BidiIter > const &);

  // 公開メンバ関数
  value_type const & operator*() const;
  value_type const * operator->() const;
  regex_iterator< BidiIter > & operator++();
  regex_iterator< BidiIter > operator++(int);

説明

regex_iterator 構築、コピー、解体の公開演算

regex_iterator()
regex_iterator(BidiIter begin, BidiIter end, basic_regex<BidiIter> const &rex, regex_constants::match_flag_type flags = regex_constants::match_default)
template<typename LetExpr>
regex_iterator(BidiIter begin, BidiIter end, basic_regex<BidiIter> const &rex, unspecified args, regex_constants::match_flag_type flags = regex_constants::match_default)
regex_iterator(regex_iterator<BidiIter> const &that)
regex_iterator<BidiIter> &operator=(regex_iterator<BidiIter> const &that)

regex_iterator 公開メンバ関数

value_type const &operator*() const
value_type const *operator->() const
regex_iterator<BidiIter> &operator++()

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 であるマッチ(これもゼロ幅である可能性がある)を探索する。それ以上マッチが見つからなければ、*this をシーケンスの終端を指すイテレータと等値に設定する。

事後条件

(*this)->size() == pre->mark_count() + 1

事後条件

(*this)->empty() == false

事後条件

(*this)->prefix().first == ii は(前回見つかったマッチの終端位置を指すイテレータ)

事後条件

(*this)->prefix().last == (**this)[0].first

事後条件

(*this)->prefix().matched == (*this)->prefix().first != (*this)->prefix().second

事後条件

(*this)->suffix().first == (**this)[0].second

事後条件

(*this)->suffix().last == end

事後条件

(*this)->suffix().matched == (*this)->suffix().first != (*this)->suffix().second

事後条件

(**this)[0].first == ii はこのマッチの開始イテレータ

事後条件

(**this)[0].second == ii はこのマッチの終端イテレータ

事後条件

完全マッチが見つかった場合は (**this)[0].matched == true 、(match_partial フラグを設定して見つかった)部分マッチの場合は (**this)[0].matched == true

事後条件

n < (*this)->size() である全ての整数 n について (**this)[n].first == vvn 番目の部分式にマッチしたシーケンスの先頭。n 番目の部分式がマッチに関与しなかった場合は end

事後条件

n < (*this)->size() である全ての整数 n について (**this)[n].second == vvn 番目の部分式にマッチしたシーケンスの終端。n 番目の部分式がマッチに関与しなかった場合は end

事後条件

n < (*this)->size() である全ての整数 n について (**this)[n].matched == bbn 番目の部分式がマッチに関与した場合は true 、それ以外の場合は false

事後条件

(*this)->position() == dd は走査対象シーケンスの先頭からこのマッチの先頭までの距離

regex_iterator<BidiIter> operator++(int)