regex_iterator クラス

一致の反復子クラス。

構文

template<class BidIt,
   class Elem = typename std::iterator_traits<BidIt>::value_type,
   class RxTraits = regex_traits<Elem> >
class regex_iterator

パラメーター

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

Elem
一致させる要素の型。

RXtraits
要素の特徴 (traits) クラス。

解説

このクラス テンプレートは、定数前方反復子オブジェクトを表します。 反復子範囲 match_results<BidIt> で定義された文字シーケンスに正規表現オブジェクト *pregex を繰り返し適用することによって、 [begin, end)型のオブジェクトを抽出します。

コンストラクター

コンストラクター 説明
regex_iterator 反復子を構築します。

Typedefs

型名 説明
difference_type 反復子の型の相違点。
iterator_category 反復子カテゴリの型。
pointer 一致へのポインターの型です。
参照先 一致を指す参照の型です。
regex_type 一致させる正規表現の型。
value_type 一致の型

演算子

演算子 説明
operator!= 反復子の非等値を比較します。
operator* 指定した一致にアクセスします。
operator++ 反復子をインクリメントします。
operator= 反復子が等しいかどうかを比較します。
operator-> 指定した一致にアクセスします。

要件

ヘッダー: <regex>

名前空間: std

正規表現の例については、次の記事を参照してください。

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

typedef std::regex_iterator<const char *> Myiter;
int main()
    {
    const char *pat = "axayaz";
    Myiter::regex_type rx("a");
    Myiter next(pat, pat + strlen(pat), rx);
    Myiter end;

    for (; next != end; ++next)
        std::cout << "match == " << next->str() << std::endl;

// other members
    Myiter it1(pat, pat + strlen(pat), rx);
    Myiter it2(it1);
    next = it1;

    Myiter::iterator_category cat = std::forward_iterator_tag();
    Myiter::difference_type dif = -3;
    Myiter::value_type mr = *it1;
    Myiter::reference ref = mr;
    Myiter::pointer ptr = &ref;

    dif = dif; // to quiet "unused" warnings
    ptr = ptr;

    return (0);
    }
match == a
match == a
match == a

regex_iterator::d ifference_type

反復子の型の相違点。

typedef std::ptrdiff_t difference_type;

解説

型は、std::ptrdiff_t の同意語。

regex_iterator::iterator_category

反復子カテゴリの型。

typedef std::forward_iterator_tag iterator_category;

解説

型は、std::forward_iterator_tag の同意語。

regex_iterator::operator!=

反復子の非等値を比較します。

bool operator!=(const regex_iterator& right);

パラメーター

right
比較する反復子。

解説

このメンバー関数は、!(*this == right) を返します。

regex_iterator::operator*

指定した一致にアクセスします。

const match_results<BidIt>& operator*();

解説

このメンバー関数は、格納されている値 match を返します。

regex_iterator::operator++

反復子をインクリメントします。

regex_iterator& operator++();
regex_iterator& operator++(int);

解説

現在の一致に文字がない場合、最初の演算子は regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail | regex_constants::match_not_null)を呼び出します。それ以外の場合は、現在の一致の後の最初の文字を指す begin 格納された値が進み、 regex_search(begin, end, match, *pregex, flags | regex_constants::match_prev_avail)が呼び出されます。 どちらの場合も、検索に失敗したら、演算子がオブジェクトをシーケンス末尾の反復子に設定します。 演算子はそのオブジェクトを返します。

2 つ目の演算子は、オブジェクトのコピーを作成して、オブジェクトをインクリメントしてから、そのコピーを返します。

regex_iterator::operator=

反復子が等しいかどうかを比較します。

bool operator==(const regex_iterator& right);

パラメーター

right
比較する反復子。

解説

このメンバー関数は、*thisright の両方がシーケンス末尾の反復子の場合、または両方がシーケンス末尾の反復子ではなく、begin == right.beginend == right.endpregex == right.pregex、と flags == right.flags の場合に true を返します。 それ以外の場合は、false を返します。

regex_iterator::operator->

指定した一致にアクセスします。

const match_results<BidIt> * operator->();

解説

メンバー関数は、格納されている値 matchのアドレスを返します。

regex_iterator::p ointer

一致へのポインターの型です。

typedef match_results<BidIt> *pointer;

解説

この型は match_results<BidIt>*のシノニムです。ここで BidIt はテンプレート パラメーターです。

regex_iterator::reference

一致を指す参照の型です。

typedef match_results<BidIt>& reference;

解説

この型は match_results<BidIt>&のシノニムです。ここで BidIt はテンプレート パラメーターです。

regex_iterator::regex_iterator

反復子を構築します。

regex_iterator();

regex_iterator(BidIt first,
    BidIt last,
    const regex_type& re,
    regex_constants::match_flag_type f = regex_constants::match_default);

パラメーター

first
一致させるシーケンスの先頭。

last
一致させるシーケンスの末尾。

re
照合する正規表現。

f
一致のフラグ。

解説

1 つ目のコンストラクターは、シーケンス末尾の反復子を構築します。 2 番目のコンストラクターは、格納されている値 beginfirst で、格納されている値 endlast で、格納されている値 pregex&re で、格納されている値 flagsf でそれぞれ初期化します。 次に、 regex_search(begin, end, match, *pregex, flags)を呼び出します。 検索に失敗すると、コンストラクターがオブジェクトをシーケンス末尾の反復子に設定します。

regex_iterator::regex_type

一致させる正規表現の型。

typedef basic_regex<Elem, RXtraits> regex_type;

解説

typedef は、 basic_regex<Elem, RXtraits>のシノニムです。

regex_iterator::value_type

一致の型

typedef match_results<BidIt> value_type;

解説

この型は match_results<BidIt>のシノニムです。ここで BidIt はテンプレート パラメーターです。

関連項目

<regex>
regex_constants クラス
regex_error クラス
<regex> 関数
regex_iterator クラス
<regex> 演算子
regex_token_iterator クラス
regex_traits クラス
<regex> typedefs