■■ 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