C++で淡々とregex.hを使ってみた その1
boostの正規表現ライブラリを使っていたのだが, Cライブラリであるregex.hで代替できないか試してみる. ひとまずは以下のページを参考にした.
http://sometime.minidns.net/programming/c/posix_regex.html
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/regex.3.html
まずは基本である正規表現パターンバッファの作成とエラー時の対応について.
#include <regex.h> #include <iostream> int main(void) { regex_t reg; const int errcode(regcomp(®, "[ijk", REG_EXTENDED)); if (errcode != 0) { char errbuf[100]; regerror(errcode, ®, errbuf, sizeof(errbuf)); std::cout << "regcompile error: " << errbuf << std::endl; } regfree(®); return 0; }
これは失敗する例. "regcompile error: Unmatched [ or [^"のようになればOK. regcompileでパターンを作成して, 返り値が0でなければなんらかのエラーなので, regerrorでエラー内容を文字列として得る. 後はregfreeでバッファを開放すれば良いみたい.