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 deklaration | Kontrakt |
|---|---|
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.Destroy | Släpper det kompilerade mönstret, matchningsdata och kontexter; uppringare anropar normalt Free i ett finally-block |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | Kompilerar 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): Boolean | Krä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): Boolean | Krä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): Boolean | Anropar 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: TXLSRegexStatus | Skrivskyddad 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: Cardinal | Skrivskyddat antal uttryckliga fångstgrupper som det senast kompilerade mönstret rapporterar, exklusive hela-matchningen-sloten; använd det efter att Compile lyckats |
TXLSRegex.AdditionalBytes: Int64 | Lä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 |
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
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
TXLSRegexStatus-värde | Betydelse |
|---|---|
xrsOk | Backend-åtgärden fullbordades med lyckat resultat |
xrsNoMatch | Den aktuella matchningssökningen fann ingen matchning |
xrsInvalidPattern | Mönstret kunde inte kompileras, inklusive ogiltig mönsterkodning |
xrsInvalidReplacement | Ersättningsuttrycket avslogs, eller så låg ett backend-fel utanför de uttryckliga statusmappningarna |
xrsInvalidText | Matchning eller substitution påträffade ett uttryckligen klassifierat UTF-16-indata- eller teckengränsfel |
xrsResourceLimit | En backend-allokering, intern matchningsgräns eller byte-räkningsgräns förhindrade fullbordande |
xrsAborted | Budgetcallbacken stoppade åtgärden, dess callback utlöste ett undantag, eller så avbröt en inbyggd callout matchningen |
xrsUnavailable | Må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