Scintilla bietet Such- und Ersetzungsfunktionen, die eine normale Suche und eine Suche nach regulären Ausdrücken durchführen können. Die regulären Ausdrücke von Scintilla bieten nur sehr begrenzte Grundfunktionen.
Wenn Sie eine Textsuche durchführen, müssen Sie das Suchflag setzen: CFIND_WHOLEWORD entspricht der gesamten Einzelauswahl
In regulären Ausdrücken gibt es einige Sonderzeichen:
Zeichenbeschreibung
Entspricht jedem Zeichen
/( Gruppenübereinstimmung Start-Tag
/x x wird als normales Zeichen interpretiert, zum Beispiel: / [ wird als das Zeichen [
[…] interpretiert. Entspricht jedem Zeichen in [], z. B. [a-zA-Z] entspricht jedem Buchstaben
[^… ] Entspricht nicht in [] Irgendein Zeichen in
^ Entspricht dem Anfang der Zeile
$ Entspricht dem Ende der Zeile
* Entspricht 0 oder mehr Malen
+ Entspricht 1 oder mehr Malen
SCI_FINDTEXT
SCI_FINDTEXT(int flags, TextToFind *ttf)
Suche Text basierend auf Suchflags. Wenn gefunden, geben Sie die Startposition des passenden Texts zurück und setzen Sie ttf.chrgText.cpMin und ttf.chrgText.cpMax auf die Start- und Endpositionen des passenden Texts, andernfalls wird -1 zurückgegeben. SCI_FINDTEXT ändert die aktuellen Auswahlinformationen nicht.
SCI_SEARCHANCHOR
int flags = SCFIND_MATCHCASE |. SCFIND_WHOLEWORD;
char *chText = "search text";
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_SEARCHNEXT
SCI_SEARCHNEXT(int searchFlags, const char *text)
SCI_SEARCHPREV
SCI_SEARCHPREV(int searchFlags, const char *text)
Suche nach dem angegebenen Text beginnend von der Ankerposition aufwärts (die Endposition ist der Anfang des Dokuments). ), wenn gefunden, wählen Sie den passenden Text aus, geben Sie die Startposition des passenden Textes zurück, andernfalls wird -1 zurückgegeben. Vor der Verwendung von SCI_SEARCHPREV wird normalerweise SCI_SEARCHANCHOR aufgerufen, um die Ankerposition festzulegen. Die SCI_SEARCHPREV-Nachricht führt nicht dazu, dass die Ansicht gescrollt wird, und der Cursor befindet sich auf einer Seite nahe dem Anfang des Dokuments. Wenn die Makroaufzeichnungsfunktion aktiviert ist, löst die SCI_SEARCHPREV-Nachricht die SCN_MACRORECORD-Ereignisbenachrichtigung aus.
1) SCI_SETTARGETSTART(int pos)
Legen Sie die Startposition der Suche fest und geben Sie TRUE (1) zurück. Im Modus für nicht reguläre Ausdrücke können Sie die Startposition so einstellen, dass sie größer als die Endposition ist, um eine umgekehrte Suche durchzuführen.
Zurück zur Startposition der Suche.
SCI_SETTARGETEND, SCI_GETTARGETEND
Legen Sie die Endposition der Suche fest und geben Sie TRUE (1) zurück.
2) SCI_GETTARGETEND Gibt die Endposition der Suche zurück.
SCI_TARGETFROMSELECTION
Legen Sie die Start- und Endposition der Suche gemäß der aktuellen Auswahlnachricht fest und geben Sie TRUE (1) zurück.
SCI_SETSEARCHFLAGS, SCI_GETSEARCHFLAGS
1) SCI_SETSEARCHFLAGS(int searchFlags)
Suchflags setzen und TRUE (1) zurückgeben.
Gibt Suchflags zurück.
SCI_SEARCHINTARGET
SCI_SEARCHINTARGET(int length, const char *text)
Suchen Sie nach dem angegebenen Text basierend auf den durch SCI_SETTARGETSTART, SCI_SETTARGETEND, SCI_SETSEARCHFLAGS usw. festgelegten Informationen. Wenn gefunden, wird die Startposition des passenden Textes zurückgegeben, andernfalls wird -1 zurückgegeben. Der Text muss nicht mit einem 0-Terminator enden und die Länge des Suchtexts wird durch den Längenparameter angegeben.
SCI_REPLACETARGET
SCI_REPLACETARGET(int length, const char *text)
Ersetzen Sie Text basierend auf den durch SCI_SETTARGETSTART und SCI_SETTARGETEND festgelegten Informationen. Wenn die Länge -1 ist, ist Text eine konstante Zeichenfolge, die mit einem 0-Terminator endet, und die Länge des Textes wird zurückgegeben. Andernfalls muss Text nicht mit einem 0-Terminator enden und die Länge des Ersetzungstexts wird durch angegeben Parameterlänge und Länge wird zurückgegeben. Nach dem Ersetzen des Texts wird der Cursor neben dem Ersetzungstext am Anfang des Dokuments positioniert.
Wenn Sie einen Text löschen möchten, können Sie ihn durch eine leere Zeichenfolge ersetzen.
SCI_REPLACETARGETRE
SCI_REPLACETARGETRE(int length, const char *text)
Ähnlich wie SCI_REPLACETARGET, außer dass reguläre Ausdrücke zum Ersetzen von Text verwendet werden. Der Text kann Zeichenfolgen wie /1 – /9 enthalten. Im endgültig generierten Ersetzungstext wird das letzte übereinstimmende Ergebnis der regulären Ausdruckssuche verwendet, um Zeichenfolgen wie /1 – /9 zu ersetzen.
Das Obige ist der Inhalt des Scintilla-Benutzerhandbuchs (3) – Suchen und Ersetzen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!