lxRegex udostępnia TXLSRegex, stanowy backend używany przez funkcje wyrażeń regularnych kalkulatora; zwykli wywołujący skoroszyt mogą korzystać z API formuł opisanych w kontekstowej ewaluacji formuł
Backend korzysta z dołączonego builda PCRE2 10.49 16-bit z trybem UTF, automatycznymi calloutami budżetu i bez JIT, ze statycznymi obiektami dla celów Delphi i C++Builder Windows oraz obsługiwanych celów FPC Linux x64 albo macOS ARM64; nieobsługiwane cele backendu raportują xrsUnavailable
Każda instancja posiada swój skompilowany wzorzec, alokator i konteksty dopasowania; utwórz osobną instancję dla każdej jednoczesnej operacji i trzymaj właściciela callbacka budżetu przy życiu do zwolnienia instancji
| Deklaracja publiczna | Kontrakt |
|---|---|
TXLSRegex.Create(ABudget: TXLSRegexBudget) | Alokuje konteksty backendu i zachowuje opcjonalny callback; przekaż nil dla braku budżetu wywołującego, po czym badaj wyniki operacji i Status |
TXLSRegex.Destroy | Zwalnia skompilowany wzorzec, dane dopasowania i konteksty; wywołujący normalnie wołają Free w bloku finally |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | Kompiluje wzorzec UTF-16 i przygotowuje jego zapis przechwytywań, zastępując każdy poprzedni wzorzec; IgnoreCase włącza dopasowanie PCRE2 bez rozróżniania wielkości liter, a False pozostawia dopasowanie z rozróżnianiem |
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): Boolean | Wymaga udanej kompilacji, szuka od numerowanego od zera offsetu UTF-16 i zwraca odłączone offsety przechwytywań; NonemptyAtStart=True żąda zakotwiczonego, niepustego dopasowania w dokładnie tym offsecie, co wspiera przesuwanie się po pustym dopasowaniu |
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): Boolean | Wymaga udanej kompilacji i korzysta ze składni podstawiania PCRE2, łącznie z numerowanymi i nazwanymi odwołaniami przechwytywań; zero wybiera wszystkie dopasowania, wartość dodatnia wybiera numerowane od 1 wystąpienie od początku, a wartość ujemna liczy od końca |
TXLSRegex.Check(AWork, AExtraBytes): Boolean | Wywołuje callback budżetu z bieżącym przyrostem pracy i rezydentnymi bajtami backendu plus AdditionalBytes oraz proponowanymi dodatkowymi bajtami; ujemny rachunek bajtów, przepełnienie liczby całkowitej albo zatrzaśnięty status terminalny zwraca False |
TXLSRegex.Status: TXLSRegexStatus | Status tylko do odczytu dla ostatniej operacji albo terminalnego warunku budżetu/backendu; użyj go, gdy operacja zwróci False, aby odróżnić brak dopasowania od błędu |
TXLSRegex.CaptureCount: Cardinal | Tylko do odczytu: liczba jawnych grup przechwytywań raportowana przez ostatnio skompilowany wzorzec, bez slotu całego dopasowania; użyj po udanym Compile |
TXLSRegex.AdditionalBytes: Int64 | Rachunek do odczytu i zapisu dla tymczasowych buforów wywołującego, które powinny uczestniczyć w każdym sprawdzeniu budżetu; domyślnie zero i samodzielnie nie alokuje pamięci |
TXLSRegexOffsets to tablica dynamiczna NativeUInt z dwoma elementami na slot; slot zerowy zawiera całe dopasowanie, po czym następują jawne grupy przechwytywań w kolejności deklaracji
Każda para to numerowany od zera początek i wyłączny koniec mierzone w jednostkach kodu UTF-16, a nie w indeksach stringów Delphi numerowanych od 1 ani w pozycjach Unicode scalar; nieustawione opcjonalne przechwytywanie używa High(NativeUInt) dla obu końcówek
Match czyści swoją tablicę wyjścia przed każdą próbą; Replace czyści wyjście przed rozpoczęciem, a udane podstawienie bez wybranego wystąpienia zwraca pierwotny tekst z xrsOk
Odwołania podstawień korzystają z notacji dolara PCRE2, takiej jak $1 i ${name}; nieustawione uczestniczące przechwytywanie wnosi pusty ciąg, podczas gdy nieprawidłowe odwołanie podstawienia raportuje xrsInvalidReplacement
Wywołaj Compile z powodzeniem przed dopasowaniem albo podstawianiem; wywołanie bez przygotowanego wzorca zwraca False i nie fabrykuje statusu błędu wzorca
TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object otrzymuje przyrost pracy do akumulacji i bieżący szacunek bajtów do porównania z limitem wywołującego; ABytes nie jest delty alokacji
Sprawdzenia następują podczas przygotowania wzorca, alokacji backendu, calloutów dopasowania, alokacji offsetów wyniku i podstawiania; wywołujący dostarcza politykę anulowania i kwot zamiast polegać na globalnym mutowalnym budżecie procesu
Zwrócenie False albo podniesienie wyjątku z callbacka przerywa operację z xrsAborted; wyjątki callbacków nie wydostają się przez natywny backend
xrsResourceLimit, xrsAborted i xrsUnavailable są terminalne dla tej instancji, więc po tych warunkach utwórz nową instancję przed ponowną próbą; błędy nieprawidłowego wzorca albo tekstu nie narzucają tego terminalnego zatrzasku
Wartość TXLSRegexStatus | Znaczenie |
|---|---|
xrsOk | Operacja backendu zakończyła się powodzeniem |
xrsNoMatch | Bieżące wyszukiwanie dopasowania nie znalazło dopasowania |
xrsInvalidPattern | Wzorzec nie dał się skompilować, łącznie z nieprawidłowym kodowaniem wzorca |
xrsInvalidReplacement | Wyrażenie podstawienia zostało odrzucone albo błąd backendu wypadł poza jawnymi mapowaniami statusów |
xrsInvalidText | Dopasowanie albo podstawianie napotkało jawnie zaklasyfikowany błąd wejścia UTF-16 albo granicy znaku |
xrsResourceLimit | Alokacja backendu, wewnętrzny limit dopasowania albo limit rachunku bajtów uniemożliwiły ukończenie |
xrsAborted | Callback budżetu zatrzymał operację, jego callback podniósł wyjątek albo natywny callout przerwał dopasowanie |
xrsUnavailable | Cel nie ma obsługiwanego dołączonego statycznego backendu |
Kalkulator mapuje te statusy backendu na własne błędy formuł i diagnostykę ewaluacji; te bezpośrednie API backendu nie zwracają wariantów błędów Excela