Docs HotXLS

API du backend d'expressions régulières

lxRegex expose TXLSRegex, le backend à état employé par les fonctions d'expressions régulières du calculator ; les appelants de classeurs ordinaires peuvent utiliser les API de formules décrites dans l'évaluation contextuelle de formules

Le backend emploie la build 16 bits PCRE2 10.49 fournie avec le mode UTF, des callouts de budget automatiques et pas de JIT, avec des objets statiques pour les cibles Delphi et C++Builder Windows et les cibles FPC Linux x64 ou macOS ARM64 prises en charge ; les cibles de backend non prises en charge signalent xrsUnavailable

Chaque instance détient son pattern compilé, son allocateur et ses contextes de correspondance ; créez une instance séparée pour chaque opération simultanée et gardez le propriétaire du callback de budget en vie jusqu'à la libération de l'instance

Déclaration publiqueContrat
TXLSRegex.Create(ABudget: TXLSRegexBudget)Alloue les contextes du backend et retient le callback facultatif ; passez nil pour aucun budget appelant, puis inspectez les résultats d'opérations et Status
TXLSRegex.DestroyLibère le pattern compilé, les données de correspondance et les contextes ; les appelants invoquent normalement Free dans un bloc finally
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanCompile un pattern UTF-16 et prépare son stockage de captures, en remplaçant tout pattern précédent ; IgnoreCase active la correspondance insensible à la casse de PCRE2 et False garde une correspondance sensible à la casse
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanExige une compilation réussie, cherche à partir de l'offset UTF-16 en base zéro et renvoie des offsets de captures détachés ; NonemptyAtStart=True demande une correspondance ancrée et non vide à cet offset exact, ce qui permet d'avancer au-delà d'une correspondance vide
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanExige une compilation réussie et emploie la syntaxe de remplacement de PCRE2, références de captures numérotées et nommées comprises ; zéro sélectionne toutes les correspondances, une valeur positive sélectionne la nième occurrence en base un depuis le début, et une valeur négative compte depuis la fin
TXLSRegex.Check(AWork, AExtraBytes): BooleanAppelle le callback de budget avec l'incrément de travail courant et les octets résidents du backend plus AdditionalBytes et les octets supplémentaires proposés ; une comptabilité d'octets négative, un dépassement d'entier ou un statut terminal verrouillé renvoie False
TXLSRegex.Status: TXLSRegexStatusStatut en lecture seule de la dernière opération ou de la condition terminale de budget/backend ; employez-le quand une opération renvoie False pour distinguer une absence de correspondance d'un échec
TXLSRegex.CaptureCount: CardinalNombre en lecture seule de groupes de captures explicites signalés par le dernier pattern compilé, hors emplacement de la correspondance entière ; employez-le après un Compile réussi
TXLSRegex.AdditionalBytes: Int64Comptabilité en lecture/écriture des tampons temporaires détenus par l'appelant qui doivent participer à chaque vérification de budget ; il vaut zéro par défaut et n'alloue pas de mémoire lui-même

Offsets, sortie et comportement de remplacement

TXLSRegexOffsets est un tableau dynamique de NativeUInt à deux éléments par emplacement ; l'emplacement zéro contient la correspondance entière, suivie des groupes de captures explicites dans l'ordre de déclaration

Chaque paire est un début en base zéro et une fin exclusive, mesurés en unités de code UTF-16, plutôt qu'en indices de chaînes Delphi en base un ou en positions de scalaires Unicode ; une capture facultative non renseignée emploie High(NativeUInt) pour ses deux bornes

Match vide son tableau de sortie avant chaque tentative ; Replace vide sa sortie avant de commencer, et un remplacement réussi sans occurrence sélectionnée renvoie le texte d'origine avec xrsOk

Les références de remplacement emploient la notation dollar de PCRE2, telles que $1 et ${name} ; une capture participante non renseignée contribue une chaîne vide, tandis qu'une référence de remplacement invalide signale xrsInvalidReplacement

Appelez Compile avec succès avant de chercher ou de remplacer ; un appel sans pattern préparé renvoie False et ne fabrique pas de statut d'erreur de pattern

Callback de budget

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object reçoit un incrément de travail à accumuler et une estimation d'octets courante à comparer à la limite de l'appelant ; ABytes n'est pas un delta d'allocation

Les vérifications ont lieu pendant la préparation du pattern, les allocations du backend, les callouts de correspondance, l'allocation des offsets de résultats et la substitution ; l'appelant fournit la politique d'annulation et de quota au lieu de dépendre d'un budget global mutable au processus

Renvoyer False ou lever une exception depuis le callback interrompt l'opération avec xrsAborted ; les exceptions de callback ne s'échappent pas du backend natif

xrsResourceLimit, xrsAborted et xrsUnavailable sont terminaux pour cette instance, donc créez une autre instance avant de réessayer après ces conditions ; les erreurs de pattern ou de texte invalides n'imposent pas ce verrouillage terminal

Valeurs de statut

Valeur TXLSRegexStatusSignification
xrsOkL'opération du backend s'est achevée avec succès
xrsNoMatchLa recherche de correspondance courante n'a rien trouvé
xrsInvalidPatternLe pattern n'a pas pu être compilé, encodage de pattern invalide compris
xrsInvalidReplacementL'expression de remplacement a été rejetée ou une erreur du backend est tombée hors des mappages de statut explicites
xrsInvalidTextLa correspondance ou la substitution a rencontré une erreur d'entrée UTF-16 ou de frontière de caractères explicitement classée
xrsResourceLimitUne allocation du backend, une limite interne de correspondance ou une limite de comptabilité d'octets a empêché l'achèvement
xrsAbortedLe callback de budget a arrêté l'opération, son callback a levé une exception, ou un callout natif a interrompu la correspondance
xrsUnavailableLa cible ne dispose d'aucun backend statique fourni pris en charge

Le calculator mappe ces statuts du backend vers ses propres erreurs de formules et diagnostics d'évaluation ; ces API directes du backend ne renvoient pas de variants d'erreurs Excel