Heim  >  Artikel  >  Backend-Entwicklung  >  Scintilla-Benutzerhandbuch (3) – Suchen und Ersetzen

Scintilla-Benutzerhandbuch (3) – Suchen und Ersetzen

黄舟
黄舟Original
2017-01-17 10:30:242228Durchsuche

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

scfind_wordstart passendes Wort beginnt


scfind_regexp passender regulärer Ausdruck


scfind_posix Posix-Kompatibilitätsmodus-Übereinstimmung (z. B. Verwenden Sie (*) anstelle von /(*/))


Im nicht regulären Ausdrucksmodus, wenn Ende kleiner als Start ist, Sie können aufwärts und rückwärts suchen; im regulären Ausdrucksmodus können Sie nur vorwärts und abwärts suchen.

In regulären Ausdrücken gibt es einige Sonderzeichen:

Zeichenbeschreibung

Entspricht jedem Zeichen

/( Gruppenübereinstimmung Start-Tag

/) Gruppen-Matching-End-Tag


/n n nimmt den Wert 1 – 9 an und gibt das Ergebnis des Gruppen-Matchings an


/0ec54d4adec8d41f3f7e2dba0685023f Übereinstimmung mit dem Ende des Wortes


/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


SCI_SEARCHANCHOR

Setzen Sie die Suchankerposition auf die Position nahe dem Anfang des Dokuments in den aktuellen Auswahlinformationen und geben Sie TRUE (1) zurück. Diese Nachricht wird normalerweise vor dem Aufruf von SCI_SEARCHNEXT oder SCI_SEARCHPREV verwendet. Wenn die Makroaufzeichnungsfunktion aktiviert ist, löst die SCI_SEARCHANCHOR-Nachricht die SCN_MACRORECORD-Ereignisbenachrichtigung aus.

int flags = SCFIND_MATCHCASE |. SCFIND_WHOLEWORD;
char *chText = "search text";

SendMessage(SCI_SEARCHANCHOR, 0, 0);
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)
{
...
}
SendMessage(SCI_SEARCHNEXT, flags, (LPARAM)chText);

SCI_SEARCHNEXT

SCI_SEARCHNEXT(int searchFlags, const char *text)

Suche nach dem angegebenen Text beginnend von der Ankerposition nach unten (der Die Endposition ist das Ende des Dokuments. Wenn sie gefunden wird, wird der passende Text ausgewählt und die Startposition des passenden Textes zurückgegeben, andernfalls wird -1 zurückgegeben. Vor der Verwendung von SCI_SEARCHNEXT wird normalerweise SCI_SEARCHANCHOR aufgerufen, um die Ankerposition festzulegen. Die SCI_SEARCHNEXT-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_SEARCHNEXT-Nachricht die SCN_MACRORECORD-Ereignisbenachrichtigung aus.



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.

SCI_SETTARGETSTART, SCI_GETTARGETSTART


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.

2) SCI_GETTARGETSTART

Zurück zur Startposition der Suche.


SCI_SETTARGETEND, SCI_GETTARGETEND

1) SCI_SETTARGETEND(int pos)

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

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.

2) SCI_GETSEARCHFLAGS

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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn