Skip to content

Latest commit

 

History

History
61 lines (46 loc) · 2.71 KB

File metadata and controls

61 lines (46 loc) · 2.71 KB

mark_count

  • regex[meta header]
  • std[meta namespace]
  • basic_regex[meta class]
  • function[meta id-type]
  • cpp11[meta cpp]
unsigned int mark_count() const;

概要

正規表現内のキャプチャグループの数を返す。

戻り値

正規表現内のキャプチャグループの数

備考

キャプチャグループとは、正規表現内の丸カッコで囲まれた部分の事である。
キャプチャグループは、その正規表現内の後方や、regex_replace による置換時などに使用することができる。
また、match_results オブジェクトを使用することによって、regex_matchregex_search 等の結果として受け取ることもできる。
その場合、キャプチャグループに対応する部分は match_results オブジェクトのメンバ関数で sub_match オブジェクトとして(operator[])、あるいは文字列として(str)アクセス可能である。
なお、this->flags()regex_constants::nosubs が含まれている場合は、キャプチャグループは無効となるため、本関数の戻り値は 0 となる。

#include <iostream>
#include <regex>

int main()
{
  std::regex re("(\\w+) (\\d+) (\\w+)");
  std::cout << re.mark_count() << std::endl;
}
  • mark_count()[color ff0000]

出力

3

バージョン

言語

  • C++11

処理系

  • Clang: 3.0 [mark verified], 3.1 [mark verified], 3.2 [mark verified], 3.3 [mark verified], 3.4 [mark verified], 3.5 [mark verified], 3.6 [mark verified]
  • GCC: 4.9.0 [mark verified], 4.9.1 [mark verified], 4.9.2 [mark verified], 5.0.0 [mark verified]
  • ICC: ??
  • Visual C++: ??

参照

  • LWG Issue 2359. How does regex_constants::nosubs affect basic_regex::mark_count()?
    • C++14で、regex_constants::nosubsが「いかなる部分式もマークされたものとして扱わない」ことを指定するものであると明確化され、本関数が0を返すことが規定から導かれるようになった
    • この修正は欠陥報告(DR)であり、C++11以降に遡及して適用される。nosubsが本関数へ及ぼす影響が未規定だったものの明文化であり、処理系は当初から0を返していたため