| ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
Windows関連 Solaris関連 画像入出力 その他アルゴリズムなど |
SRegex仕様ライブラリ インタフェースヘッダファイルSRegexを使用するためには、「SRegex.h」をインクルードする。 名前空間SRegexは、名前空間「N_SRegex」で定義されている。 インスタンス生成SRegexを使用するためには、クラス「SRegex」のインスタンスを生成する必要がある。 型と宣言の方法は以下の通り。 T_Char 「一文字」を表現するのに使用するデータ型を指定する。charやwchar_tなど。 以下の条件を満たす型を指定すること。
T_PtnPtr 正規表現の文字列をポイントする、ポインタ型を指定する。const char*やconst wchar_t*など。 以下の条件を満たす型を指定すること。
T_Text 検索対象の文字列をポイントする、ポインタ型を指定する。const char*やconst wchar_t*など。 以下の条件を満たす型を指定すること。
なお、SRegexは正規表現のパターン及びマッチング対象の文字列の末尾に、'\0'が格納されていることに依存している。 自分で実装したクラスを指定する場合には、十分に注意すること。 メソッドSRegexには、以下のメソッドが存在する。 pattern 正規表現のパターンを指定する。 戻り値 成功すれば真。失敗すれば偽を返す。 概要 指定した正規表現を元に、NFAを構築する。失敗した際の、詳細なエラー値は「GetLastError()」により取得できる。 pText 検索対象のテキストを指定する。 ppSPos マッチした範囲の開始位置を取得するための、ポインタのアドレスを指定する。 ppEPos マッチした範囲の終了位置を取得するための、ポインタのアドレスを指定する。 戻り値 マッチした部分が存在すれば真を返す。マッチしなければ偽を返す。 概要 指定したテキスト中に、マッチする範囲があるか否かを検索する。マッチした場合は、その範囲をppSPos及びppEPosに返す。 マッチする範囲が複数箇所存在する場合は、テキストの一番先頭に存在する部分を返す。 pText 検索対象のテキストを指定する。 ppEPos マッチした範囲の終了位置を取得するための、ポインタのアドレスを指定する。 戻り値 マッチすれば真を返す。マッチしなければ偽を返す。 概要 指定したテキストがマッチするか否かを検査する。 pVec 値を取得するための配列を指定。 概要 前方参照を行う正規表現グループの、それぞれのマッチした範囲を取得する。 Match及びFindMatchStrメソッドにより検索が行われ、テキストがマッチしていない場合には、情報は取得できない。 概要 エラー値を取得する。 概要 エラー発生箇所を取得する。 正規表現 文法正規表現として以下の構文を使用する。
前方参照について 前方参照を行う正規表現グループの番号は「(^」が出現した順番に0から通番で振られていく。 「\znnnn」で参照可能な正規表現グループは、その前に出現した正規表現グループのみを参照することが可能。 また、正規表現グループ内で当該の正規表現グループを参照する事はできない。つまり、 などといった使用法は不可能である。 また、上記のような正規表現では、エラー「SRE_UNDEFINED_BACKWARD」となるが、 とした場合には、エラーとはならない。 ただし、\z0000は(とりあえず)長さ0の文字列にマッチしたものとして扱われる。よって、このような使用法もするべきではない。 ループ内で使用する前方参照について。 ループ「{XYZ}や、{^XYZ}」内に、前方参照を行う正規表現グループが含まれていた場合、 当該のループ内で参照する場合は正しい値となる。しかし、当該のループを抜けた後で参照した場合は、最後にマッチした文字列とマッチする事となる。 たとえば、下記のような正規表現を考える。 これは、下記のようなテキストとマッチする。 しかし、以下のようなテキストとはマッチしない。 また、\z0000を{}の外で使用した場合、 下記のようなテキストとマッチする事となる。 これは「GetBackwardInfo」で取得する値についても同じである。 エラー値エラー値とその意味は、下記の通りである。
なお、「SRE_EOF_NOT_ANTICIPATED」は、パターンの末尾に\が存在する場合などに発生する。 また、「SRE_ZERO_LENGTH_PTN」は、「()」や「(ABC|)」など、パターンが入力されなければならない位置に、パターンが存在していない場合に発生する。 |
|||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||