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|y x と 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_]" と指定した場合と同じ意味になります。 \num num には、正の整数を指定します。既に見つかり、記憶されている部分と一致します。たとえば、"(.)\1" は、連続する 2 つの同じ文字に一致します。 \n n に指定した 8 進数のエスケープ値と一致します。8 進数の値には、1 桁、2 桁、または 3 桁で指定します。たとえば、"\11" と "\011" は、両方ともタブ文字に一致します。"\0011" は、"\001" および "1" と同じ意味になります。8 進数のエスケープ値は、256 を超えることはできません。256 を超える数値を指定した場合、初めの 2 桁で値が評価されます。この表記により、正規表現で ASCII コードを使用できるようになります。 \xn n に指定した 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'); :