いろんなものはつながっている

C++で正規表現を使う(1)

名前の中間一致がしたくなった。
ABCと指定したら、ABCという文字列が含まれる名前をすべて洗い上げる、というようなもの。

C++でどうやって正規表現を使うかみてみると、Visual Studioにあるregexというクラスを使うのがよさそうだ。

このページをを参考にPatternの文字列がTargetに含まれるか評価する関数を実装してみた。

#include "stdafx.h"
#include <string>
#include <tchar.h>
#include <regex>

typedef std::basic_string<TCHAR> tstring;

using namespace std::tr1;

bool IsMatched(const tstring& rTarget, const tstring& rPattern)
{ 
  basic_regex<TCHAR> Pattern(rPattern.c_str());
  match_results<tstring::const_iterator> results;
    
  bool bResult = 
  regex_search(rTarget.begin(), rTarget.end(), results, Pattern);

  return bResult;

}

マッチング結果がはいるresultsには、
1.マッチした文字列の始点と終点のイテレータ、
2.マッチした文字列の前の文字列の始点と終点のイテレータ
3.マッチした文字列の後ろの文字列の始点と終点のイテレータ
が格納されている。

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

スポンサード リンク

カテゴリー

スポンサード リンク