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
比較する反復子。
解説
このメンバー関数は、*this
と right の両方がシーケンス末尾の反復子の場合、または両方がシーケンス末尾の反復子ではなく、begin == right.begin
、end == right.end
、pregex == 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 番目のコンストラクターは、格納されている値 begin
を first で、格納されている値 end
を last で、格納されている値 pregex
を &re
で、格納されている値 flags
を f でそれぞれ初期化します。 次に、 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