CMNロゴ

ICmnPilot::cmnRegSearch Method


正規表現検索を行ないます。

Syntax

int cmnRegSearch(
    BSTR sourceString,
    BSTR patternString,
    const char *pszFlag
);

Parameters

sourceString

[in] 検索対象の文字列

patternString

[in] 正規表現のパターン文字列
以下の文字及びエスケープシーケンスを使用することができます。
\次に続く文字が特別な文字またはリテラルであることを示します。たとえば、"n" は "n" という文字と一致します。"\n"は、改行文字と一致します。"\\" は、"\" と一致します。"\(" は "(" と一致します。
^入力の開始と一致します。
$入力の終端と一致します。
*直前の文字と 0 回以上一致します。たとえば、"zo*" は "z" とも "zoo" とも一致します。
+直前の文字と 1 回以上一致します。たとえば、"zo+" は "zoo" とは一致しますが、"z" とは一致しません。
?直前の文字と 0 回または 1 回一致します。たとえば、"a?ve?" は "never" の "ve" に一致します。
.改行文字以外の任意の単独文字と一致します。
(pattern)引数 pattern に指定した文字と一致します。一致する文字列が見つかったら、記憶されます。一致した部分は ICmnPilot::cmnRegSubResultで取得できます。かっこ文字、() を指定するには、"\(" および "\)" を使用します。
x|yx と y のどちらかと一致します。たとえば、"z|wood" は "z" と "wood" に一致します。"(z|w)oo" は、"zoo" と "wood" に一致します。
{n}n には、0 以上の整数を指定します。直前の文字と正確に n 回一致します。たとえば、"o{2}" は、"Bob" の "o" とは一致しませんが、"foooood" の最初の 2 つの o とは一致します。
{n,}n には、0 以上の整数を指定します。直前の文字と少なくとも n 回一致します。たとえば、"o{2,}" は、"Bob" の "o" とは一致しませんが、"foooood" のすべての o と一致します。"o{1,}" は、"o+" と同じ意味になります。"o{0,}" は、"o*" と同じ意味になります。
{n,m}m および n には、0 以上の整数を指定します。直前の文字と n 〜 m 回一致します。たとえば、"o{1,3}" は、"fooooood" の最初の 3 つの o と一致します。"o{0,1}" は、"o?" と同じ意味になります。
[xyz]文字セット。角かっこで囲まれた文字の中のいずれかと一致します。たとえば、"[abc]" は "plain" の "a" と一致します。また "[\s\S]" は改行も含めた任意の単独文字と一致します。
[^xyz]否定の文字セット。角かっこで囲まれた文字にはない任意の文字と一致します。"[^abc]" は、"plain" の "p" と一致します。
[a-z]文字の範囲。指定した範囲に含まれる任意の文字に一致します。たとえば、"[a-z]" は、"a" から "z" までの任意のアルファベットの小文字に一致します。
[^m-z]否定の文字の範囲。指定した範囲に含まれていない任意の文字に一致します。たとえば、"[^m-z]" は "m" から "z" までの範囲に含まれない任意の文字に一致します。
\b単語の境界と一致します。単語の境界とは、単語とスペースの間の位置のことです。たとえば、"er\b" は、"never" の "er" に一致します。"verb" の "er" には一致しません。
\B単語の境界ではない部分と一致します。たとえば、"ea*r\B" は、"never early" の "ear" と一致します。
\d数字と一致します。[0-9] と指定した場合と同じ意味になります。
\D数字以外の文字と一致します。[^0-9] と指定した場合と同じ意味になります。
\fフォームフィード文字と一致します。
\n改行文字と一致します。
\rキャリッジ リターン文字と一致します。
\sスペース、タブ、フォームフィードなどの任意の空白文字と一致します。"[ \f\n\r\t\v]" と指定した場合と同じ意味になります。
\S空白文字のない部分と一致します。"[^ \f\n\r\t\v]" と指定した場合と同じ意味になります。
\tタブ文字と一致します。
\v垂直タブ文字と一致します。
\w単語に使用される任意の文字と一致します。これには、アンダースコアも含まれます。"[A-Za-z0-9_]" と指定した場合と同じ意味になります。
\W単語に使用される文字以外の任意の文字と一致します。"[^A-Za-z0-9_]" と指定した場合と同じ意味になります。
\numnum には、正の整数を指定します。既に見つかり、記憶されている部分と一致します。たとえば、"(.)\1" は、連続する 2 つの同じ文字に一致します。
\nn に指定した 8 進数のエスケープ値と一致します。8 進数の値には、1 桁、2 桁、または 3 桁で指定します。たとえば、"\11" と "\011" は、両方ともタブ文字に一致します。"\0011" は、"\001" および "1" と同じ意味になります。8 進数のエスケープ値は、256 を超えることはできません。256 を超える数値を指定した場合、初めの 2 桁で値が評価されます。この表記により、正規表現で ASCII コードを使用できるようになります。
\xnn に指定した 16 進数のエスケープ値と一致します。16 進数のエスケープ値は、2 桁である必要があります。たとえば、"\x41" は、"A" に一致します。"\x041" は、"\x04" および "1"と同じ意味になります。この表記により、正規表現で ASCII コードを使用できるようになります。

pszFlag

[in] 検索修飾子
指定できる修飾子は以下の通り。
i大文字・小文字無視
gグローバル検索

Return Value

パターンに一致した件数が戻ります。

Remarks

この機能はVBScriptのExecuteメソッドに相当します。
検索対象文字列とパターン文字列は BSTR 型で指定します。
元がShiftJIS文字列の場合、 C++の場合には、_bstr_t にキャストすることにより BSTR 型を渡すことができます。
Delphiの場合には、WideString にキャストすることにより BSTR 型を渡すことができます。
検索結果はICmnPilot::cmnRegResult及びICmnPilot::cmnRegSubResultで得ることができます。
検索結果は次にcmnRegSearchをコールするまで保持されます。
但しICmnPilot::cmnRegPushを使用することにより検索結果を保持したままcmnRegSearchをコールすることが可能です。
「.*」は最長一致となりますので、最短一致させる場合には「.*?」を使用します。


Example

C++

         :
    cHit = m_pICmnPilot->cmnRegSearch ((_bstr_t)pPage,
                                       (_bstr_t)"<!--S-->(.*?)<!--E-->",
                                       "ig");
         :

Delphi

         :
    cHit := m_pICmnPilot.cmnRegSearch (WideString(pPage),
                                       WideString('<!--S-->(.*?)<!--E-->'),
                                       'ig');
         :



ICmnPilot