// ヘッダ:<boost/xpressive/regex_primitives.hpp
>
- struct :cpp
~::boost::xpressive::mark_tag
{ //
構築、コピー、解体 <mark_tag.construct-copy-destruct>
:cpp~mark_tag::mark_tag
(int);//
非公開静的メンバ関数 <mark_tag.private-static-functions>
static{unspecified}
:cppmake_tag
(int);
};
:cppmark_tag
は部分マッチのグローバルなプレースホルダ :cpp!s0
、:cpp!s1
、…の型である。:cppmark_tag
を使用すると、より意味のある名前で部分マッチプレースホルダを作成できる。動的正規表現における「名前付き捕捉」機能とおおよそ等価である。
名前付き部分マッチプレースホルダは、一意な整数で初期化して作成する。この整数はプレースホルダを使用する正規表現内で一意でなければならない。静的正規表現内でこれに部分式を代入して部分マッチを作成するか、すでに作成した部分マッチを後方参照できる。 :
mark_tag number(1); // number は s1 と等価
// 数字、続いて空白、再び同じ数字にマッチ
sregex rx = (number = +_d) >> ' ' >> number;
:cpp!regex_match()
か :cpp!regex_search()
が成功した後は、部分マッチのプレースホルダを :cppmatch_results\<>
オブジェクトの添字にして、対応する部分マッチを得る。