C++で正規表現(boost::regex編) [プログラミング]
C++で正規表現を使います(その1)。
とりあえず、一番手っ取り早いのは、boostのregexではないでしょうか。
次期標準C++(C++0x)に組み込まれることになっていますし、今後は、コレさえあれば他には必要なくなるような状況です。
使い方は、こんな感じ。
const char* pattern = "a+b"; const char* target = "femakabfain"; boost::regex ex(pattern); boost::match_results<const char*> result; if (boost::regex_search(target, result, ex)) { std::cout << "found\n" << "pos = " << result.position() << "\n" << "len = " << result.length() << "\n" << "str = " << result.str() << "\n"; } else { std::cout << "not found\n"; }
上の例は、文字列中からの検索(regex_search
)ですが、一致(regex_match
)とか置換(regex_replace
)とか、必要なものは一通りそろっています。
弱点は日本語に対応していないと言うこと。
const char* pattern = "ab"; const char* target = "ヂb"; (略)
これでも検索が成功してしまいます。
「ヂ」の2バイト目が(Shift JISコードで)「0x61」で、「a」と同じなので。
日本語を扱いたい時は、boost::regex
ではなくて、Unicode版のboost::wregex
を使いましょう(使い方は同じ)。
今日の一冊 | |
|
タグ:C++
2009-08-21 07:41
nice!(0)
コメント(0)
トラックバック(0)
コメント 0