lxRegex expõe TXLSRegex, o backend com estado usado pelas funções de expressão regular da calculadora; chamadores comuns de pasta de trabalho podem usar as APIs de fórmula descritas na avaliação contextual de fórmulas
O backend usa o build de 16 bits PCRE2 10.49 empacotado, com modo UTF, callouts automáticos de orçamento e sem JIT, com objetos estáticos para destinos Windows de Delphi e C++Builder e destinos FPC com suporte de Linux x64 ou macOS ARM64; destinos de backend sem suporte relatam xrsUnavailable
Cada instância é dona do padrão compilado dela, do alocador e dos contextos de correspondência; crie uma instância separada para cada operação simultânea e mantenha o dono do callback de orçamento vivo até a instância ser liberada
| Declaração pública | Contrato |
|---|---|
TXLSRegex.Create(ABudget: TXLSRegexBudget) | Aloca contextos de backend e retém o callback opcional; passe nil para nenhum orçamento do chamador, depois inspecione os resultados das operações e o Status |
TXLSRegex.Destroy | Libera o padrão compilado, os dados de correspondência e os contextos; chamadores normalmente invocam Free em um bloco finally |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | Compila um padrão UTF-16 e prepara o armazenamento de captura dele, substituindo qualquer padrão anterior; IgnoreCase habilita correspondência sem diferenciar maiúsculas do PCRE2 e False deixa a correspondência sensível a maiúsculas |
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): Boolean | Exige uma compilação bem-sucedida, procura a partir do offset UTF-16 com base zero e retorna offsets de captura desanexados; NonemptyAtStart=True solicita uma correspondência ancorada e não vazia naquele offset exato, o que aceita avançar além de uma correspondência vazia |
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): Boolean | Exige uma compilação bem-sucedida e usa a sintaxe de substituição do PCRE2, incluindo referências de captura numeradas e nomeadas; zero seleciona todas as correspondências, um valor positivo seleciona a ocorrência com base um a partir do início, e um valor negativo conta a partir do fim |
TXLSRegex.Check(AWork, AExtraBytes): Boolean | Chama o callback de orçamento com o incremento de trabalho atual e os bytes residentes do backend mais AdditionalBytes e os bytes extras propostos; contabilidade de bytes negativa, overflow de inteiro ou um status terminal travado retorna False |
TXLSRegex.Status: TXLSRegexStatus | Status somente leitura da última operação ou de condição terminal de orçamento/backend; use-o depois de uma operação retornar False para distinguir uma correspondência ausente de uma falha |
TXLSRegex.CaptureCount: Cardinal | Número somente leitura de grupos de captura explícitos relatados pelo padrão compilado mais recentemente, excluindo a posição de correspondência inteira; use-o depois de Compile ter sucesso |
TXLSRegex.AdditionalBytes: Int64 | Contabilidade de leitura e gravação para buffers temporários de propriedade do chamador que devem participar de toda verificação de orçamento; tem zero como padrão e não aloca memória por si |
TXLSRegexOffsets é um array dinâmico de NativeUInt com dois elementos por posição; a posição zero contém a correspondência inteira, seguida pelos grupos de captura explícitos na ordem de declaração
Cada par é um início com base zero e um fim exclusivo medidos em unidades de código UTF-16, em vez dos índices de string com base um do Delphi ou das posições escalares Unicode; uma captura opcional não definida usa High(NativeUInt) para ambos os endpoints
Match limpa o array de saída dele antes de cada tentativa; Replace limpa a saída dele antes de começar, e uma substituição bem-sucedida sem ocorrência selecionada retorna o texto original com xrsOk
Referências de substituição usam a notação de cifrão do PCRE2, como $1 e ${name}; uma captura participante não definida contribui com uma string vazia, enquanto uma referência de substituição inválida relata xrsInvalidReplacement
Chame Compile com sucesso antes de corresponder ou substituir; uma chamada sem um padrão preparado retorna False e não fabrica um status de erro de padrão
TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object recebe um incremento de trabalho para acumular e uma estimativa atual de bytes para comparar com o limite do chamador; ABytes não é um delta de alocação
As verificações ocorrem durante a preparação do padrão, alocações do backend, callouts de correspondência, alocação de offsets de resultado e substituição; o chamador fornece a política de cancelamento e de cota em vez de depender de um orçamento mutável de todo o processo
Retornar False ou disparar uma exceção do callback aborta a operação com xrsAborted; exceções de callback não escapam pelo backend nativo
xrsResourceLimit, xrsAborted e xrsUnavailable são terminais para essa instância, então crie outra instância antes de tentar novamente depois dessas condições; erros de padrão ou de texto inválidos não impõem esse travamento terminal
Valor de TXLSRegexStatus | Significado |
|---|---|
xrsOk | A operação do backend foi concluída com sucesso |
xrsNoMatch | A busca de correspondência atual não encontrou correspondência |
xrsInvalidPattern | O padrão não pôde ser compilado, incluindo codificação de padrão inválida |
xrsInvalidReplacement | A expressão de substituição foi rejeitada ou um erro do backend ficou fora dos mapeamentos explícitos de status |
xrsInvalidText | A correspondência ou substituição encontrou um erro explicitamente classificado de entrada UTF-16 ou de limite de caractere |
xrsResourceLimit | Uma alocação do backend, um limite interno de correspondência ou um limite de contabilidade de bytes impediu a conclusão |
xrsAborted | O callback de orçamento interrompeu a operação, o callback dele disparou uma exceção, ou um callout nativo abortou a correspondência |
xrsUnavailable | O destino não tem backend estático empacotado com suporte |
A calculadora mapeia esses status de backend para os próprios erros de fórmula e diagnósticos de avaliação dela; estas APIs diretas de backend não retornam variantes de erro do Excel