Guide de l'utilisateur de Scintilla (3) - Rechercher et remplacer

黄舟
Libérer: 2023-03-04 21:12:02
original
2237 Les gens l'ont consulté

Scintilla fournit des fonctions de recherche et de remplacement, qui peuvent effectuer une recherche ordinaire et une recherche d'expression régulière. Les expressions régulières de Scintilla ne fournissent que des fonctions de base très limitées.
Lors de la recherche de texte, vous devez définir l'indicateur de recherche : CFIND_WHOLEWORD correspond à la sélection unique entière

scfind_wordstart le mot correspondant commence


scfind_regexp correspondance d'expression régulière


scfind_posix correspondance du mode de compatibilité posix (comme Utiliser (*) au lieu de /(*/))


En mode d'expression non régulière, lorsque end est inférieur à start, vous pouvez effectuer une recherche vers le haut et vers l'arrière ; en mode expression régulière, vous ne pouvez effectuer une recherche que vers le bas.

Dans les expressions régulières, il existe des caractères spéciaux :

Description du caractère

Correspond à n'importe quel caractère

/( Correspondance de groupe. balise de début

/) Balise de fin de correspondance de groupe


/n n prend la valeur 1 – 9, indiquant le résultat de la correspondance de groupe


/< Faire correspondre le début du mot


/> Faire correspondre la fin du mot


/x x sera interprété comme un caractère normal, par exemple : / [ est interprété comme le caractère [


[…] Correspond à n'importe quel caractère dans [], tel que [a-zA-Z] correspond à n'importe quelle lettre


[^… ] Ne correspond pas à [] N'importe quel caractère entre


^ Correspond au début de la ligne


$ Correspond à la fin de la ligne


* Correspond à 0 fois ou plus


Correspond à 1 fois ou plus


SCI_FINDTEXT


SCI_FINDTEXT(int flags, TextToFind *ttf)

Recherche de texte basé sur les indicateurs de recherche. S'il est trouvé, renvoyez la position de départ du texte correspondant et définissez ttf.chrgText.cpMin et ttf.chrgText.cpMax aux positions de début et de fin du texte correspondant, sinon -1 est renvoyé. SCI_FINDTEXT ne modifie pas les informations de sélection actuelles.


SCI_SEARCHANCHOR

SCI_SEARCHANCHOR

Définissez la position de l'ancre de recherche sur la position proche du début du document dans les informations de sélection actuelle et renvoyez TRUE (1). Ce message est généralement utilisé avant d'appeler SCI_SEARCHNEXT ou SCI_SEARCHPREV. Si la fonction d'enregistrement de macro est activée, le message SCI_SEARCHANCHOR déclenchera la notification d'événement SCN_MACRORECORD.


int flags = SCFIND_MATCHCASE | SCFIND_WHOLEWORD;
char *chText = "texte de recherche";

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)
{
...
}
Copier après la connexion
SendMessage(SCI_SEARCHANCHOR, 0, 0);

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


SCI_SEARCHNEXT

SCI_SEARCHNEXT(int searchFlags, const char *text)

Recherchez le texte spécifié en partant de la position d'ancrage vers le bas (le la position de fin est la fin du document), si elle est trouvée, sélectionne le texte correspondant et renvoie la position de départ du texte correspondant, sinon renvoie -1. Avant d'utiliser SCI_SEARCHNEXT, SCI_SEARCHANCHOR est généralement appelé pour définir la position de l'ancre. Le message SCI_SEARCHNEXT ne provoque pas le défilement de la vue et le curseur se trouve sur un côté près du début du document. Si la fonction d'enregistrement de macro est activée, le message SCI_SEARCHNEXT déclenchera la notification d'événement SCN_MACRORECORD.


SCI_SEARCHPREV

SCI_SEARCHPREV(int searchFlags, const char *text)

Recherchez le texte spécifié en partant de la position d'ancrage vers le haut (la position de fin est le début du document ), s'il est trouvé, sélectionnez le texte correspondant, renvoie la position de départ du texte correspondant, sinon renvoie -1. Avant d'utiliser SCI_SEARCHPREV, SCI_SEARCHANCHOR est généralement appelé pour définir la position de l'ancre. Le message SCI_SEARCHPREV ne provoque pas le défilement de la vue et le curseur se trouve sur un côté près du début du document. Si la fonction d'enregistrement de macro est activée, le message SCI_SEARCHPREV déclenchera la notification d'événement SCN_MACRORECORD.

SCI_SETTARGETSTART, SCI_GETTARGETSTART

1) SCI_SETTARGETSTART(int pos)

Définissez la position de départ de la recherche et renvoyez TRUE (1). En mode expression non régulière, vous pouvez définir la position de départ pour qu'elle soit supérieure à la position de fin pour effectuer une recherche inversée.

2) SCI_GETTARGETSTART

Retour à la position de départ de la recherche.



SCI_SETTARGETEND, SCI_GETTARGETEND

1) SCI_SETTARGETEND(int pos)

Définissez la position de fin de recherche et renvoyez TRUE (1).

2) SCI_GETTARGETEND
Renvoie la position finale de la recherche.


SCI_TARGETFROMSELECTION

SCI_TARGETFROMSELECTION

Définissez la position de début et la position de fin de la recherche en fonction du message de sélection actuel, renvoyez TRUE (1).



SCI_SETSEARCHFLAGS, SCI_GETSEARCHFLAGS

1) SCI_SETSEARCHFLAGS(int searchFlags)

Définissez les indicateurs de recherche et renvoyez TRUE (1).

2) SCI_GETSEARCHFLAGS

Renvoie les indicateurs de recherche.



SCI_SEARCHINTARGET

SCI_SEARCHINTARGET(int length, const char *text)
Recherchez le texte spécifié en fonction des informations définies par SCI_SETTARGETSTART, SCI_SETTARGETEND, SCI_SETSEARCHFLAGS, etc. S'il est trouvé, renvoie la position de départ du texte correspondant, sinon renvoie -1. Le texte ne doit pas nécessairement se terminer par un terminateur 0 et la longueur du texte recherché est spécifiée par le paramètre length.

SCI_REPLACETARGET

SCI_REPLACETARGET(int length, const char *text)
Remplacez le texte en fonction des informations définies par SCI_SETTARGETSTART et SCI_SETTARGETEND. Si la longueur est -1, alors le texte est une chaîne constante se terminant par un terminateur 0 et la longueur du texte est renvoyée. Dans le cas contraire, le texte ne doit pas nécessairement se terminer par un terminateur 0 et la longueur du texte de remplacement est spécifiée par le paramètre de longueur. longueur du paramètre et la longueur est renvoyée. Après avoir remplacé le texte, le curseur sera positionné à côté du texte de remplacement, près du début du document.
Si vous souhaitez supprimer un morceau de texte, vous pouvez le remplacer par une chaîne vide.

SCI_REPLACETARGETRE

SCI_REPLACETARGETRE(int length, const char *text)
Similaire à SCI_REPLACETARGET, sauf que les expressions régulières sont utilisées pour remplacer le texte. Le texte peut contenir des séquences de caractères telles que /1 - /9 Dans le texte de remplacement généré final, le dernier résultat correspondant à la recherche d'expression régulière sera utilisé pour remplacer les séquences de caractères telles que /1 - /9.

Ce qui précède est le contenu du Guide de l'utilisateur de Scintilla (3) - Recherche et remplacement Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal