HotXLS-documentatie

Backend-API voor reguliere expressies

lxRegex stelt TXLSRegex bloot, de stateful backend die de reguliere-expressiefuncties van de calculator gebruiken; gewone werkmap-aanroepers kunnen de formule-API's gebruiken die bij contextuele formule-evaluatie worden beschreven

De backend gebruikt de meegeleverde PCRE2 10.49 16-bit build met UTF-modus, automatische budget-callouts en geen JIT, met statische objecten voor Delphi- en C++Builder-Windows-doelen en ondersteunde FPC Linux x64- of macOS ARM64-doelen; niet-ondersteunde backend-doelen rapporteren xrsUnavailable

Elke instantie is eigenaar van zijn gecompileerde patroon, allocator en matchcontexten; maak een aparte instantie voor elke gelijktijdige bewerking en houd de eigenaar van de budget-callback in leven tot de instantie wordt vrijgegeven

Openbare declaratieContract
TXLSRegex.Create(ABudget: TXLSRegexBudget)Reserveert backend-contexten en houdt de optionele callback vast; geef nil mee voor geen budget van de aanroeper en inspecteer daarna bewerkingsresultaten en Status
TXLSRegex.DestroyGeeft het gecompileerde patroon, matchdata en contexten vrij; aanroepers roepen normaal Free aan in een finally-blok
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanCompileert een UTF-16-patroon en bereidt zijn capture-opslag voor, waarbij elk eerder patroon wordt vervangen; IgnoreCase schakelt PCRE2-hoofdletterongevoelig matching in en False laat matching hoofdlettergevoelig
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanVereist een geslaagde compilatie, zoekt vanaf de zero-based UTF-16-offset en geeft losgemaakte capture-offsets terug; NonemptyAtStart=True vraagt een verankerde, niet-lege match op die exacte positie, wat vooruitkomen voorbij een lege match ondersteunt
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanVereist een geslaagde compilatie en gebruikt PCRE2-vervangingssyntaxis, inclusief genummerde en benoemde capture-verwijzingen; nul kiest alle matches, een positieve waarde kiest het 1-based voorkomen vanaf het begin, en een negatieve waarde telt vanaf het einde
TXLSRegex.Check(AWork, AExtraBytes): BooleanRoept de budget-callback aan met de actuele werktoename en residente backendbytes plus AdditionalBytes en de voorgestelde extra bytes; negatieve byte-administratie, integer-overflow of een gelatchte terminale status geeft False terug
TXLSRegex.Status: TXLSRegexStatusAlleen-lezen status van de laatste bewerking of terminale budget-/backendtoestand; gebruik het nadat een bewerking False teruggeeft om een afwezige match van een fout te onderscheiden
TXLSRegex.CaptureCount: CardinalAlleen-lezen aantal expliciete capture-groepen gerapporteerd door het laatst gecompileerde patroon, exclusief de hele-match-slot; gebruik het nadat Compile is geslaagd
TXLSRegex.AdditionalBytes: Int64Lees/schrijfbare administratie voor tijdelijke buffers in eigendom van de aanroeper die bij elke budgetcontrole moeten meetellen; staat standaard op nul en wijst zelf geen geheugen toe

Offsets, uitvoer en vervangingsgedrag

TXLSRegexOffsets is een dynamische array van NativeUInt met twee elementen per slot; slot nul bevat de hele match, gevolgd door expliciete capture-groepen in declaratievolgorde

Elk paar is een zero-based begin en exclusief einde, gemeten in UTF-16-code-eenheden, en niet de 1-based stringindices van Delphi of Unicode-scalarposities; een niet-ingestelde optionele capture gebruikt High(NativeUInt) voor beide eindpunten

Match wist zijn uitvoerarray vóór elke poging; Replace wist zijn uitvoer voordat hij begint, en een geslaagde vervanging zonder gekozen voorkomen geeft de oorspronkelijke tekst terug met xrsOk

Vervangingsverwijzingen gebruiken de dollarnotatie van PCRE2, zoals $1 en ${name}; een niet-deelnemende capture levert een lege string, terwijl een ongeldige vervangingsverwijzing xrsInvalidReplacement rapporteert

Roep Compile met succes aan vóór het matchen of vervangen; een aanroep zonder voorbereid patroon geeft False terug en verzint geen patroonfoutstatus

Budget-callback

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object ontvangt een op te tellen werktoename en een actuele byteschatting om te vergelijken met de limiet van de aanroeper; ABytes is geen toewijzingsdelta

Controles plaatsen tijdens patroonvoorbereiding, backend-toewijzingen, matching-callouts, het toewijzen van resultaatoffsets en substitutie; de aanroeper levert het annulerings- en quotumbeleid in plaats van te leunen op een procesbreed mutabel budget

False teruggeven of een exception geven vanuit de callback breekt de bewerking af met xrsAborted; callback-exceptions ontsnappen niet via de native backend

xrsResourceLimit, xrsAborted en xrsUnavailable zijn terminaal voor die instantie, dus maak een nieuwe instantie aan voordat je het na die toestanden opnieuw probeert; ongeldige patroon- of tekstfouten leggen die terminale latch niet op

Statuswaarden

TXLSRegexStatus-waardeBetekenis
xrsOkDe backend-bewerking is met succes voltooid
xrsNoMatchDe huidige match-zoekactie vond geen match
xrsInvalidPatternHet patroon kon niet worden gecompileerd, inclusief ongeldige patrooncodering
xrsInvalidReplacementDe vervangingsexpressie werd geweigerd of een backendfout viel buiten de expliciete statusmappings
xrsInvalidTextMatching of substitutie stuitte op een expliciet geclassificeerde UTF-16-invoer- of tekengrensfout
xrsResourceLimitEen backend-toewijzing, interne matchinglimiet of byte-administratielimiet verhinderde voltooiing
xrsAbortedDe budget-callback stopte de bewerking, zijn callback gaf een exception, of een native callout brak matching af
xrsUnavailableHet doelplatform heeft geen ondersteunde meegeleverde statische backend

De calculator mapt deze backend-statussen naar zijn eigen formulefouten en evaluatiediagnoses; deze directe backend-API's geven geen Excel-foutvariants terug