regex


正規表現部分の概要


  • 基本演算子
  • . : 実行者以外のすべての文字
  • a:文字a
  • ab:文字列ab
  • x|y:xまたはy
  • 特殊文字:^+{}$()[]|-?.*特殊文字

  • ロールクラス
  • [a-d]:a,b,c,dの1文字
  • [^a-d]:1文字(a,b,c,dを除く)
  • d:1個の数字
  • D:非数値オブジェクト
  • s:1個のスペース
  • S:空白以外のオブジェクト
  • w:アルファベットまたは数字
  • W:アルファベットまたは数値以外のオブジェクト

  • 量子化演算子
  • x*:0より大きいx
  • x+:1つまたは複数のx
  • x? : 0または1 x
  • x{2}:xは正確に2個
  • x{2,5}:x

  • エスケープ文字
  • n:概要
  • r:リターンキャラクタ(現在行頭)
  • t:タブ

  • 位置の指定
  • ^:文字列の先頭
  • b:単語境界
  • B:非語境界
  • $:文字列末尾

  • チーム
  • (x):キャプチャグループ
  • (?:x):非キャプチャグループ
  • regexの使用

  • std::regex_match(str, re)
    -regパターンがstr全体と一致するかどうかtrue、false return
  • std::regex_search(str, re)
    -regモードstrにtrue、false return
  • が存在するかどうか
  • std::regex_search(str, smatches, re)
    -regモードstr内でsmatchesを見つけて入れる
  • vector<string> split(string result)
    {
    	vector<string> results;
    	regex reg("[0-9]*[SDT][*#]*");
    
    	smatch what;
    	for (smatch m; regex_search(result, m, reg); result = m.suffix()) {
    		results.push_back(m.str());
    	}
    
    	return results;
    }