HotXLS-dokumentation

Backend-API för reguljära uttryck

lxRegex exponerar TXLSRegex, den tillståndsfulla backend som kalkulatorns funktioner för reguljära uttryck använder; vanliga arbetsboksuppringare kan använda formel-API:erna som beskrivs i kontextuell formelutvärdering

Backenden använder det medföljande 16-bitarsbygget av PCRE2 10.49 med UTF-läge, automatiska budget-callouts och ingen JIT, med statiska objekt för Delphi- och C++Builder-Windows-mål samt stödda FPC Linux x64- eller macOS ARM64-mål; backendmål som inte stöds rapporterar xrsUnavailable

Varje instans äger sitt kompilerade mönster, sin allokerare och sina matchningskontexter; skapa en separat instans för varje samtidig åtgärd och håll budgetcallbackens ägare vid liv tills instansen frigörs

Publik deklarationKontrakt
TXLSRegex.Create(ABudget: TXLSRegexBudget)Allokerar backend-kontexter och behåller den valfria callbacken; skicka nil för ingen uppringarbudget och granska sedan åtgärdsresultat och Status
TXLSRegex.DestroySläpper det kompilerade mönstret, matchningsdata och kontexter; uppringare anropar normalt Free i ett finally-block
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanKompilerar ett UTF-16-mönster och förbereder dess fångstlagring samt ersätter eventuellt tidigare mönster; IgnoreCase aktiverar PCRE2:s skiftlägesokänsliga matchning och False lämnar matchningen skiftlägeskänslig
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanKräver en lyckad kompilering, söker från den nollbaserade UTF-16-offseten och returnerar friställda fångstoffset; NonemptyAtStart=True begär en förankrad, icke-tom matchning vid exakt den offseten, vilket stöder att avancera förbi en tom matchning
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanKräver en lyckad kompilering och använder PCRE2:s ersättningssyntax, inklusive numrerade och namngivna fångstreferenser; noll väljer alla matchningar, ett positivt värde väljer den ettbaserade förekomsten från början, och ett negativt värde räknar från slutet
TXLSRegex.Check(AWork, AExtraBytes): BooleanAnropar budgetcallbacken med det aktuella arbetsbidraget och residenta backend-byte plus AdditionalBytes och de föreslagna extra byten; negativ byte-räkning, heltalsöverspill eller en låst terminalstatus returnerar False
TXLSRegex.Status: TXLSRegexStatusSkrivskyddad status för den senaste åtgärden eller terminalt budget-/backend-tillstånd; använd den efter att en åtgärd returnerat False för att skilja en saknad matchning från ett fel
TXLSRegex.CaptureCount: CardinalSkrivskyddat antal uttryckliga fångstgrupper som det senast kompilerade mönstret rapporterar, exklusive hela-matchningen-sloten; använd det efter att Compile lyckats
TXLSRegex.AdditionalBytes: Int64Läs-/skrivbar räkning för uppringarägda temporära buffertar som ska ingå i varje budgetkontroll; den är noll som standard och allokerar inget minne själv

Offset, utdata och ersättningsbeteende

TXLSRegexOffsets är en dynamisk matris av NativeUInt med två element per slot; slot noll innehåller hela matchningen, följt av uttryckliga fångstgrupper i deklarationsordning

Varje par är en nollbaserad start och ett exklusivt slut, mätt i UTF-16-kodenheter, i stället för Delphi:s ettbaserade strängindex eller Unicode-skalärpositioner; en osatt valfri fångst använder High(NativeUInt) för båda ändpunkterna

Match rensar sin utdatamatris före varje försök; Replace rensar sin utdata före starten, och en lyckad ersättning utan vald förekomst returnerar originaltexten med xrsOk

Ersättningsreferenser använder PCRE2:s dollarnotation, som $1 och ${name}; en osatt deltagande fångst bidrar med en tom sträng, medan en ogiltig ersättningsreferens rapporterar xrsInvalidReplacement

Anropa Compile med lyckat resultat före matchning eller ersättning; ett anrop utan förberett mönster returnerar False och framställer ingen mönsterfelstatus

Budgetcallback

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object tar emot ett arbetsbidrag att ackumulera och en aktuell byteuppskattning att jämföra med uppringarens gräns; ABytes är ingen allokeringsdifferens

Kontroller sker under mönsterförberedelse, backend-allokeringar, matchnings-callouts, allokering av resultatoffset och substitution; uppringaren tillhandahåller avbrotts- och kvotpolicy i stället för att lita på en processomfattande föränderlig budget

Att returnera False eller utlösa ett undantag från callbacken avbryter åtgärden med xrsAborted; callback-undantag tar sig inte ut genom den inbyggda backenden

xrsResourceLimit, xrsAborted och xrsUnavailable är terminala för den instansen, så skapa en annan instans innan du försöker igen efter de tillstånden; ogiltiga mönster- eller textfel ålägger inte den terminala låsningen

Statusvärden

TXLSRegexStatus-värdeBetydelse
xrsOkBackend-åtgärden fullbordades med lyckat resultat
xrsNoMatchDen aktuella matchningssökningen fann ingen matchning
xrsInvalidPatternMönstret kunde inte kompileras, inklusive ogiltig mönsterkodning
xrsInvalidReplacementErsättningsuttrycket avslogs, eller så låg ett backend-fel utanför de uttryckliga statusmappningarna
xrsInvalidTextMatchning eller substitution påträffade ett uttryckligen klassifierat UTF-16-indata- eller teckengränsfel
xrsResourceLimitEn backend-allokering, intern matchningsgräns eller byte-räkningsgräns förhindrade fullbordande
xrsAbortedBudgetcallbacken stoppade åtgärden, dess callback utlöste ett undantag, eller så avbröt en inbyggd callout matchningen
xrsUnavailableMålet saknar en stödd medföljande statisk backend

Kalkulatorn mappar de här backend-statusarna till sina egna formelfel och utvärderingsdiagnostik; dessa direkta backend-API:er returnerar inte Excel-felvarianter