■■ kreg について ■■

C++ でも Perl でのような文字列処理を可能にするライブラリです。string ライブラリと組み合わせて使います。

■kreg 正規表現

「^,.*,+,?,$,\,[,]」と「`」メタ文字を使って文字列パターンを定義します。「`」メタ文字は「\」の働きをします。C ソース・プログラム中での正規表現記述を簡単にするために導入しました。
   '^'  行の初め                    '$'  行の最後
   '.'  任意の一文字                '\'or '`'  quote next character
   '*'  0 文字以上の繰り返し  
   '+'  一文字以上の繰り返し
   '?' 0 または 1 文字の繰り返し

    [.....] ..... の中の一文字
    [^....] ..... の中にない一文字
        [....] の中では '-' もメタ文字となる。
x-y は x から y までの範囲の文字を現す。 例 [aeio0-8] a, e, i, o, または 0 から 8までのどれか一文字 [^aeio0-8] 上以外の u や 8 などの任意の一文字
次の正規表現記述も使えます。複雑な文字列を簡便に表記できます。

               基本正規表現
               による定義                  説明

    \w  or `w  [0-9A-Wa-w]     アルファベットと数字
    \W  or `W  [^0-9A-Wa-w]    アルファベットと数字以外
    \s  or `s  [\x20\t\r\n]    空白文字
    \S  or `S  [^\x20\t\r\n]   空白文字以外
    \d  or `d  [0-9]           数字
    \D  or `D  [^0-9]          数字以外

krgstr インスタンスが正規表現文字列を保持します。Perl の =~ は string と krgstr を引数とする / operator で行ないます。 部分文字列 $1, $2 は krgstr と int を引数とする % operator 引数で行ないます。以下のように使います
    01  // test program test.cpp
    02  #include <kreg.h>
    03  using namespace std;
    04  
    05  int main(int argc,char** argv)
    06  {
    07      krgstr krgSample("([b-d]+)e");
    08      string strSample("abcdefg");
    09      string strResult;
    10  
    11      strResult = strSample / krgSample;
    12      assert(strResult == "bcde");
    13      assert(krgSample == "bcde");
    14      assert(krgSample % 1 == "bcd");
    15  
    16      //コンソールに "bcde  bcde" と表示する
    17      cout << strResult << "  " << krgSample << endl;
    18  }
    19  //cl test.cpp /MDd /W3 /Od /D"_CONSOLE" /YX /GX /Fp#.pch /link vrfyMDd.lib