ホームページ  >  記事  >  バックエンド開発  >  Scintilla ユーザー ガイド (3) - 検索と置換

Scintilla ユーザー ガイド (3) - 検索と置換

黄舟
黄舟オリジナル
2017-01-17 10:30:242192ブラウズ

Scintilla は、通常の検索と正規表現検索を実行できる検索機能と置換機能を提供します。 Scintilla の正規表現は、非常に限られた基本機能のみを提供します。
テキスト検索を実行するときは、検索フラグを設定する必要があります:

検索フラグ

SCFIND_WORDSTART 単語の先頭に一致


SCFIND_REGEXP 正規表現の一致


SCFIND_POSIX POSIX 互換モードでの正規表現マッチング (使用など) /(*/) の代わりに (*))


非正規表現モードでは、end が start より小さい場合、正規表現で上方向および逆方向の検索が可能です。数式モードでは、下方向、前方向のみの検索が可能です。方向。

正規表現には、いくつかの特殊文字があります:

文字の説明

。任意の文字に一致します

/( 開始タグに一致するグループ


/) 終了タグに一致するグループ


/n n は値を受け取ります。 1 ~ 9、グループ マッチングの結果を示します


/e718d2c306da06c70cdfeb3742bdeb81 単語の末尾と一致します


/x x は通常の文字として解釈されます。次に例を示します。 /[ は文字 [


[…] 内の任意の文字と一致します。[a-zA-Z] などの任意の文字と一致します。


[^…] [] 内にない任意の文字と一致します。


^ 行頭と一致


$ 一致する行の末尾


* 0回以上一致


+ 1回以上一致


SCI_FINDTEXT


SCI_FINDTEXT(int flags, TextToFind *ttf)

Search検索フラグに基づいたテキスト。見つかった場合は、一致するテキストの開始位置を返し、 ttf.chrgText.cpMin と ttf.chrgText.cpMax を一致するテキストの開始位置と終了位置に設定します。それ以外の場合は、-1 が返されます。 SCI_FINDTEXT は、現在の選択情報を変更しません。


int flags = SCFIND_MATCHCASE | SCFIND_WHOLEWORD;
TextToFind ttf;
ttf.chrg.cpMin = 0;
ttf.chrg.cpMax = SendMessage(SCI_GETLENGTH, 0, 0);
ttf.lpstrText = "search text";
int pos = SendMessage(SCI_FINDTEXT, flags, (LPARAM)&ttf);
if (-1 != pos)
{
...
}

SCI_SEARCHANCHOR

SCI_SEARCHANCHOR

検索アンカー位置を現在の選択情報の文書の先頭付近の位置に設定し、TRUE(1)を返します。このメッセージは通常、SCI_SEARCHNEXT または SCI_SEARCHPREV を呼び出す前に使用されます。マクロ記録機能がオンになっている場合、SCI_SEARCHANCHOR メッセージによって SCN_MACRORECORD イベント通知がトリガーされます。

int flags = SCFIND_MATCHCASE |

char *chText = "検索テキスト";

SendMessage(SCI_SEARCHANCHOR, 0, 0);
SendMessage(SCI_SEARCHNEXT, flags, (LPARAM)chText);

SCI _SEARCH次へ

SCI_SEARCHNEXT(int searchFlags, const char *text)
指定されたテキストをアンカー位置から下方向に検索します (終了位置はドキュメントの末尾です)。見つかった場合は、一致するテキストを選択し、一致したテキストの開始位置を返します。それ以外の場合は -1 が返されます。通常、SCI_SEARCHNEXT を使用する前に、SCI_SEARCHANCHOR を呼び出してアンカー位置を設定します。 SCI_SEARCHNEXT メッセージによってビューはスクロールされず、カーソルはドキュメントの先頭近くの片側に移動します。マクロ記録機能がオンになっている場合、SCI_SEARCHNEXT メッセージによって SCN_MACRORECORD イベント通知がトリガーされます。

SCI_SEARCHPREV

SCI_SEARCHPREV(int searchFlags, const char *text)

アンカー位置から上に向かって指定されたテキストを検索します (終了位置はドキュメントの先頭です)。見つかった場合は、一致するテキストを選択し、一致するテキストの開始位置、そうでない場合は - 1 を返します。通常、SCI_SEARCHPREV を使用する前に、SCI_SEARCHANCHOR を呼び出してアンカー位置を設定します。 SCI_SEARCHPREV メッセージによってビューがスクロールされることはなく、カーソルはドキュメントの先頭に近い側にあります。マクロ記録機能がオンになっている場合、SCI_SEARCHPREV メッセージによって SCN_MACRORECORD イベント通知がトリガーされます。

SCI_SETTARGETSTART, SCI_GETTARGETSTART

1) SCI_SETTARGETSTART(int pos)

検索開始位置を設定し、TRUE(1)を返します。非正規表現モードでは、開始位置を終了位置より大きく設定して、逆方向検索を実行できます。
2) SCI_GETTARGETSTART
検索開始位置に戻ります。

SCI_SETTARGETEND, SCI_GETTARGETEND


1) SCI_SETTARGETEND(int pos)
検索終了位置を設定し、TRUE(1)を返します。
2) SCI_GETTARGETEND
は検索終了位置を返します。

SCI_TARGETFROMSELECTION


SCI_TARGETFROMSELECTION
現在の選択メッセージに基づいて検索開始位置と終了位置を設定し、TRUE (1) を返します。

SCI_SETSEARCHFLAGS, SCI_GETSEARCHFLAGS

1) SCI_SETSEARCHFLAGS(int searchFlags)

検索フラグを設定し、TRUE (1) を返します。
2) SCI_GETSEARCHFLAGS
検索フラグを返します。

SCI_SEARCHINTARGET

SCI_SEARCHINTARGET(int length, const char *text)
SCI_SETTARGETSTART、SCI_SETTARGETEND、SCI_SETSEARCHFLAGS などで設定された情報をもとに、指定されたテキストを検索します。見つかった場合は、一致するテキストの開始位置を返し、見つからない場合は -1 を返します。テキストは 0 ターミネータで終わる必要はなく、検索テキストの長さは length パラメータで指定されます。

SCI_REPLACETARGET

SCI_REPLACETARGET(int length, const char *text)
SCI_SETTARGETSTART と SCI_SETTARGETEND で設定された情報に基づいてテキストを置換します。 length が -1 の場合、テキストは 0 ターミネータで終わる定数文字列であり、テキストの長さが返されます。それ以外の場合、テキストは 0 ターミネータで終わる必要はなく、置換テキストの長さは、パラメータの長さを指定すると、長さが返されます。テキストを置換した後、カーソルは文書の先頭近くの置換テキストの横に配置されます。
テキストの一部を削除したい場合は、空の文字列に置き換えることができます。

SCI_REPLACETARGETRE

SCI_REPLACETARGETRE(int length, const char *text)
テキストの置換に正規表現が使用される点を除いて、SCI_REPLACETARGET と似ています。テキストには /1 ~ /9 などの文字シーケンスを含めることができます。最終的に生成される置換テキストでは、最後の正規表現検索一致結果が /1 ~ /9 などの文字シーケンスを置換するために使用されます。

上記は Scintilla ユーザーガイド (3) - 検索と置換の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。