HotXLS Docs

API del backend de expresiones regulares

lxRegex expone TXLSRegex, el backend con estado usado por las funciones de expresiones regulares de la calculadora; los llamadores ordinarios de libros pueden usar las APIs de fórmulas descritas en la evaluación contextual de fórmulas

El backend usa la compilación de 16 bits incluida de PCRE2 10.49 con modo UTF, callouts automáticos de presupuesto y sin JIT, con objetos estáticos para los destinos Windows de Delphi y C++Builder y los destinos admitidos FPC Linux x64 o macOS ARM64; los destinos de backend no admitidos reportan xrsUnavailable

Cada instancia es dueña de su patrón compilado, su asignador y sus contextos de coincidencia; cree una instancia separada para cada operación simultánea y mantenga vivo al propietario de la devolución de llamada de presupuesto hasta que la instancia se libere

Declaración públicaContrato
TXLSRegex.Create(ABudget: TXLSRegexBudget)Asigna los contextos del backend y retiene la devolución de llamada opcional; pase nil para no tener presupuesto del llamador, y luego inspeccione los resultados de operaciones y el Status
TXLSRegex.DestroyLibera el patrón compilado, los datos de coincidencia y los contextos; los llamadores normalmente invocan Free en un bloque finally
TXLSRegex.Compile(Pattern, IgnoreCase): BooleanCompila un patrón UTF-16 y prepara su almacenamiento de capturas, reemplazando cualquier patrón anterior; IgnoreCase habilita la coincidencia de PCRE2 sin distinguir mayúsculas y False deja la coincidencia sensible a mayúsculas
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): BooleanExige una compilación exitosa, busca desde el desplazamiento UTF-16 basado en cero y devuelve desplazamientos de capturas desacoplados; NonemptyAtStart=True solicita una coincidencia anclada y no vacía en ese desplazamiento exacto, lo que permite avanzar más allá de una coincidencia vacía
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): BooleanExige una compilación exitosa y usa la sintaxis de reemplazo de PCRE2, incluidas las referencias de capturas numeradas y con nombre; cero selecciona todas las coincidencias, un valor positivo selecciona la ocurrencia basada en uno desde el inicio, y un valor negativo cuenta desde el final
TXLSRegex.Check(AWork, AExtraBytes): BooleanLlama a la devolución de llamada de presupuesto con el incremento de trabajo actual y los bytes residentes del backend más AdditionalBytes y los bytes extra propuestos; la contabilidad de bytes negativa, el desbordamiento de enteros o un estado terminal fijado devuelven False
TXLSRegex.Status: TXLSRegexStatusEstado de solo lectura de la última operación o de la condición terminal de presupuesto/backend; úselo después de que una operación devuelva False para distinguir una ausencia de coincidencia de una falla
TXLSRegex.CaptureCount: CardinalNúmero de solo lectura de grupos de captura explícitos reportados por el patrón compilado más recientemente, excluyendo la ranura de la coincidencia completa; úselo después de que Compile tenga éxito
TXLSRegex.AdditionalBytes: Int64Contabilidad de lectura y escritura para los búferes temporales de propiedad del llamador que deberían participar en cada comprobación de presupuesto; tiene cero como valor predeterminado y no asigna memoria por sí mismo

Desplazamientos, salida y comportamiento de reemplazo

TXLSRegexOffsets es un arreglo dinámico de NativeUInt con dos elementos por ranura; la ranura cero contiene la coincidencia completa, seguida de los grupos de captura explícitos en orden de declaración

Cada par es un inicio basado en cero y un final exclusivo medidos en unidades de código UTF-16, en lugar de los índices de cadena basados en uno de Delphi o las posiciones de escalares Unicode; una captura opcional sin definir usa High(NativeUInt) para ambos extremos

Match limpia su arreglo de salida antes de cada intento; Replace limpia su salida antes de comenzar, y un reemplazo exitoso sin ocurrencia seleccionada devuelve el texto original con xrsOk

Las referencias de reemplazo usan la notación de dólar de PCRE2, como $1 y ${name}; una captura participante sin definir contribuye una cadena vacía, mientras que una referencia de reemplazo inválida reporta xrsInvalidReplacement

Llame a Compile con éxito antes de coincidir o reemplazar; una llamada sin un patrón preparado devuelve False y no fabrica un estado de error de patrón

Devolución de llamada de presupuesto

TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object recibe un incremento de trabajo para acumular y una estimación actual de bytes para comparar con el límite del llamador; ABytes no es un delta de asignación

Las comprobaciones ocurren durante la preparación del patrón, las asignaciones del backend, los callouts de coincidencia, la asignación de desplazamientos de resultados y la sustitución; el llamador aporta la política de cancelación y de cuota en lugar de depender de un presupuesto mutable de todo el proceso

Devolver False o lanzar una excepción desde la devolución de llamada aborta la operación con xrsAborted; las excepciones de la devolución de llamada no escapan a través del backend nativo

xrsResourceLimit, xrsAborted y xrsUnavailable son terminales para esa instancia, así que cree otra instancia antes de reintentar después de esas condiciones; los errores de patrón o de texto inválidos no imponen ese fijado terminal

Valores de estado

Valor de TXLSRegexStatusSignificado
xrsOkLa operación del backend se completó con éxito
xrsNoMatchLa búsqueda de coincidencia actual no encontró ninguna coincidencia
xrsInvalidPatternEl patrón no pudo compilarse, incluida la codificación de patrón inválida
xrsInvalidReplacementLa expresión de reemplazo fue rechazada o un error del backend quedó fuera de los mapeos explícitos de estado
xrsInvalidTextLa coincidencia o la sustitución encontró un error explícitamente clasificado de entrada UTF-16 o de límite de caracteres
xrsResourceLimitUna asignación del backend, un límite interno de coincidencia o un límite de contabilidad de bytes impidieron completar
xrsAbortedLa devolución de llamada de presupuesto detuvo la operación, su devolución de llamada lanzó una excepción, o un callout nativo abortó la coincidencia
xrsUnavailableEl destino no tiene un backend estático incluido admitido

La calculadora mapea estos estados del backend a sus propios errores de fórmulas y diagnósticos de evaluación; estas APIs directas del backend no devuelven Variant de errores de Excel