Documentação HotXLS

API de backend de expressões regulares

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úblicaContrato
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.DestroyLibera o padrão compilado, os dados de correspondência e os contextos; chamadores normalmente invocam Free em um bloco finally
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanCompila 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): BooleanExige 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): BooleanExige 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): BooleanChama 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: TXLSRegexStatusStatus 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: CardinalNú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: Int64Contabilidade 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

Offsets, saída e comportamento de substituição

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

Callback de orçamento

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

Valores de status

Valor de TXLSRegexStatusSignificado
xrsOkA operação do backend foi concluída com sucesso
xrsNoMatchA busca de correspondência atual não encontrou correspondência
xrsInvalidPatternO padrão não pôde ser compilado, incluindo codificação de padrão inválida
xrsInvalidReplacementA expressão de substituição foi rejeitada ou um erro do backend ficou fora dos mapeamentos explícitos de status
xrsInvalidTextA correspondência ou substituição encontrou um erro explicitamente classificado de entrada UTF-16 ou de limite de caractere
xrsResourceLimitUma alocação do backend, um limite interno de correspondência ou um limite de contabilidade de bytes impediu a conclusão
xrsAbortedO callback de orçamento interrompeu a operação, o callback dele disparou uma exceção, ou um callout nativo abortou a correspondência
xrsUnavailableO 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