lxRegex espone TXLSRegex, il backend con stato usato dalle funzioni di espressioni regolari del calcolatore; i chiamanti ordinari del workbook possono usare le API di formula descritte in valutazione contestuale delle formule
Il backend usa la build 16-bit inclusa di PCRE2 10.49 con modalità UTF, callout di budget automatici e nessun JIT, con oggetti statici per i target Windows di Delphi e C++Builder e per i target supportati FPC Linux x64 o macOS ARM64; i backend non supportati del target riportano xrsUnavailable
Ogni istanza possiede il proprio pattern compilato, allocatore e contesti di match; crea un'istanza separata per ogni operazione simultanea e tieni in vita il proprietario della callback di budget finché l'istanza non viene liberata
| Dichiarazione pubblica | Contratto |
|---|---|
TXLSRegex.Create(ABudget: TXLSRegexBudget) | Alloca i contesti del backend e trattiene la callback opzionale; passa nil per nessun budget del chiamante, poi ispeziona i risultati delle operazioni e Status |
TXLSRegex.Destroy | Rilascia il pattern compilato, i dati di match e i contesti; i chiamanti normalmente invocano Free in un blocco finally |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | Compila un pattern UTF-16 e prepara il suo storage di capture, sostituendo qualunque pattern precedente; IgnoreCase abilita il matching PCRE2 senza distinzione tra maiuscole e minuscole e False lascia il matching sensibile alle maiuscole |
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): Boolean | Richiede una compilazione riuscita, cerca dall'offset UTF-16 a base zero e restituisce offset di capture scollegati; NonemptyAtStart=True richiede un match ancorato e non vuoto a quell'esatto offset, che supporta l'avanzamento oltre un match vuoto |
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): Boolean | Richiede una compilazione riuscita e usa la sintassi di sostituzione PCRE2, inclusi i riferimenti a capture numerati e denominati; zero seleziona tutti i match, un valore positivo seleziona l'occorrenza a base uno dall'inizio, e un valore negativo conta dalla fine |
TXLSRegex.Check(AWork, AExtraBytes): Boolean | Chiama la callback di budget con l'incremento di lavoro corrente e i byte residenti del backend più AdditionalBytes e i byte extra proposti; contabilità di byte negativa, overflow di interi o uno stato terminale già fissato restituiscono False |
TXLSRegex.Status: TXLSRegexStatus | Stato in sola lettura dell'ultima operazione o della condizione terminale di budget/backend; usalo dopo che un'operazione restituisce False per distinguere un match assente da un fallimento |
TXLSRegex.CaptureCount: Cardinal | Numero in sola lettura dei gruppi di acquisizione espliciti riportati dal pattern compilato più di recente, escluso lo slot della corrispondenza completa; usalo dopo il successo di Compile |
TXLSRegex.AdditionalBytes: Int64 | Contabilità in lettura e scrittura per buffer temporanei di proprietà del chiamante che devono partecipare a ogni verifica del budget; vale zero per impostazione predefinita e non alloca memoria da sé |
TXLSRegexOffsets è un array dinamico di NativeUInt con due elementi per slot; lo slot zero contiene la corrispondenza completa, seguita dai gruppi di acquisizione espliciti in ordine di dichiarazione
Ogni coppia è un inizio a base zero e una fine esclusiva misurati in unità di codice UTF-16, non negli indici di stringa a base uno di Delphi né nelle posizioni di scalari Unicode; un capture opzionale non impostato usa High(NativeUInt) per entrambi gli estremi
Match svuota il suo array di output prima di ogni tentativo; Replace svuota il suo output prima di iniziare, e una sostituzione riuscita senza occorrenze selezionate restituisce il testo originale con xrsOk
I riferimenti di sostituzione usano la notazione col dollaro di PCRE2, come $1 e ${name}; un capture partecipante non impostato contribuisce con una stringa vuota, mentre un riferimento di sostituzione non valido riporta xrsInvalidReplacement
Chiama Compile con successo prima di fare match o sostituzioni; una chiamata senza un pattern preparato restituisce False e non fabbrica uno stato di errore del pattern
TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object riceve un incremento di lavoro da accumulare e una stima corrente dei byte da confrontare con il limite del chiamante; ABytes non è un delta di allocazione
I controlli avvengono durante la preparazione del pattern, le allocazioni del backend, i callout di matching, l'allocazione degli offset dei risultati e la sostituzione; il chiamante fornisce la politica di annullamento e quota invece di affidarsi a un budget mutabile a livello di processo
Restituire False o sollevare un'eccezione dalla callback interrompe l'operazione con xrsAborted; le eccezioni delle callback non sfuggono attraverso il backend nativo
xrsResourceLimit, xrsAborted e xrsUnavailable sono terminali per quella istanza, quindi crea un'altra istanza prima di riprovare dopo quelle condizioni; gli errori di pattern o testo non validi non impongono quel blocco terminale
Valore di TXLSRegexStatus | Significato |
|---|---|
xrsOk | L'operazione del backend si è completata con successo |
xrsNoMatch | La ricerca di match corrente non ha trovato corrispondenze |
xrsInvalidPattern | Il pattern non poteva essere compilato, codifica non valida del pattern compresa |
xrsInvalidReplacement | L'espressione di sostituzione è stata rifiutata oppure un errore del backend è caduto fuori dalle mappature esplicite di stato |
xrsInvalidText | Il matching o la sostituzione ha incontrato un errore di input UTF-16 o di confine di carattere classificato esplicitamente |
xrsResourceLimit | Un'allocazione del backend, un limite interno di matching o un limite di contabilità dei byte hanno impedito il completamento |
xrsAborted | La callback di budget ha fermato l'operazione, la sua callback ha sollevato un'eccezione, oppure un callout nativo ha interrotto il matching |
xrsUnavailable | Il target non ha un backend statico incluso supportato |
Il calcolatore mappa questi stati del backend nei propri errori di formula e diagnostiche di valutazione; queste API dirette del backend non restituiscono Variant di errore Excel