lxRegex는 계산기의 정규식 함수가 쓰는 상태 저장 백엔드 TXLSRegex를 노출합니다. 평범한 통합 문서 호출자는 컨텍스트 수식 평가에서 설명하는 수식 API를 쓸 수 있습니다
백엔드는 UTF 모드, 자동 예산 콜아웃, JIT 없이 번들된 PCRE2 10.49 16비트 빌드를 사용하며, Delphi·C++Builder Windows 대상용 정적 개체와 지원되는 FPC Linux x64, macOS ARM64 대상을 제공합니다. 지원되지 않는 백엔드 대상은 xrsUnavailable을 보고합니다
각 인스턴스는 자체 컴파일 패턴, 할당자, 매치 컨텍스트를 소유합니다. 동시 작업마다 별도의 인스턴스를 만들고, 예산 콜백의 소유자는 인스턴스가 해제될 때까지 살아 있게 두세요
| 공개 선언 | 계약 |
|---|---|
TXLSRegex.Create(ABudget: TXLSRegexBudget) | 백엔드 컨텍스트를 할당하고 선택적 콜백을 유지합니다. 호출자 예산이 없으면 nil을 넘기고 그다음 작업 결과와 Status를 확인하세요 |
TXLSRegex.Destroy | 컴파일된 패턴, 매치 데이터, 컨텍스트를 해제합니다. 호출자는 보통 finally 블록에서 Free를 호출합니다 |
TXLSRegex.Compile(Pattern, IgnoreCase): Boolean | UTF-16 패턴을 컴파일하고 캡처 저장소를 준비하며 이전 패턴을 교체합니다. IgnoreCase는 PCRE2 대소문자 무시 매칭을 켜고 False는 대소문자 구분 매칭으로 남깁니다 |
TXLSRegex.Match(Text, Offset, NonemptyAtStart, out Offsets): Boolean | 성공적인 컴파일을 요구하며 0 기반 UTF-16 오프셋부터 검색해 분리된 캡처 오프셋을 반환합니다. NonemptyAtStart=True는 정확히 그 오프셋에서 앵커된 비어 있지 않은 매치를 요구하며, 빈 매치를 건너 뛰어 앞으로 나아가는 데 쓸 수 있습니다 |
TXLSRegex.Replace(Text, Replacement, Occurrence, out Value): Boolean | 성공적인 컴파일을 요구하며 번호·이름 캡처 참조를 포함한 PCRE2 대체 문법을 사용합니다. 0은 모든 매치를, 양수는 시작부터 센 1 기반 등장을, 음수는 끝부터 센 등장을 고릅니다 |
TXLSRegex.Check(AWork, AExtraBytes): Boolean | 현재 작업 증분과 상주 백엔드 바이트에 AdditionalBytes와 제안된 추가 바이트를 더해 예산 콜백을 호출합니다. 음수 바이트 회계, 정수 오버플로, 고정된 최종 상태는 False를 반환합니다 |
TXLSRegex.Status: TXLSRegexStatus | 가장 최근 작업이나 최종 예산/백엔드 상태에 대한 읽기 전용 상태입니다. 작업이 False를 반환한 뒤 이것으로 매치 없음과 실패를 구별하세요 |
TXLSRegex.CaptureCount: Cardinal | 가장 최근에 컴파일된 패턴이 보고한 명시적 캡처 그룹 수(전체 매치 슬롯 제외)입니다. Compile이 성공한 뒤 사용하세요 |
TXLSRegex.AdditionalBytes: Int64 | 모든 예산 검사에 참여해야 하는 호출자 소유 임시 버퍼에 대한 읽기·쓰기 회계입니다. 기본값 0이며 자체로 메모리를 할당하지 않습니다 |
TXLSRegexOffsets는 슬롯마다 두 요소를 갖는 NativeUInt 동적 배열입니다. 슬롯 0이 전체 매치를 담고 그다음에 선언 순서대로 명시적 캡처 그룹이 옵니다
모든 쌍은 Delphi의 1 기반 문자열 인덱스나 Unicode 스칼라 위치가 아니라 UTF-16 코드 단위로 잰 0 기반 시작과 배타적 끝입니다. 설정되지 않은 선택적 캡처는 두 끝점 모두 High(NativeUInt)를 씁니다
Match는 시도마다 출력 배열을 지웁니다. Replace는 시작 전에 출력을 지우며, 선택된 등장 없이 성공하면 xrsOk과 함께 원본 텍스트를 반환합니다
대체 참조는 $1, ${name} 같은 PCRE2 달러 표기법을 씁니다. 참여하지 않은 캡처는 빈 문자열로 기여하고, 잘못된 대체 참조는 xrsInvalidReplacement를 보고합니다
매칭이나 대체 전에 Compile을 성공시키세요. 준비된 패턴 없이 호출하면 False를 반환하고 패턴 오류 상태를 만들지 않습니다
TXLSRegexBudget = function(AWork, ABytes: Int64): Boolean of object는 누적할 작업 증분과 호출자 한도와 비교할 현재 바이트 추정을 받습니다. ABytes는 할당 델타가 아닙니다
검사는 패턴 준비, 백엔드 할당, 매칭 콜아웃, 결과 오프셋 할당, 대체 동안 일어납니다. 호출자가 프로세스 전역 가변 예산에 의존하지 않고 취소·쿼터 정책을 공급합니다
콜백이 False를 반환하거나 예외를 던지면 작업은 xrsAborted로 중단됩니다. 콜백 예외는 네이티브 백엔드를 넘어 새어 나가지 않습니다
xrsResourceLimit, xrsAborted, xrsUnavailable는 그 인스턴스에 대해 최종 상태이므로 이 조건 뒤에 재시도하려면 다른 인스턴스를 만드세요. 잘못된 패턴이나 텍스트 오류는 그 최종 고정을 강제하지 않습니다
TXLSRegexStatus 값 | 의미 |
|---|---|
xrsOk | 백엔드 작업이 성공적으로 끝났습니다 |
xrsNoMatch | 현재 매치 검색이 매치를 찾지 못했습니다 |
xrsInvalidPattern | 패턴을 컴파일할 수 없습니다. 잘못된 패턴 인코딩을 포함합니다 |
xrsInvalidReplacement | 대체 식이 거부되었거나 백엔드 오류가 명시적 상태 매핑 밖에 있었습니다 |
xrsInvalidText | 매칭이나 대체가 명시적으로 분류된 UTF-16 입력 또는 문자 경계 오류를 만났습니다 |
xrsResourceLimit | 백엔드 할당, 내부 매칭 한도, 바이트 회계 한도가 완료를 막았습니다 |
xrsAborted | 예산 콜백이 작업을 멈췄거나 콜백이 예외를 던졌거나 네이티브 콜아웃이 매칭을 중단했습니다 |
xrsUnavailable | 대상에 지원되는 번들 정적 백엔드가 없습니다 |
계산기는 이 백엔드 상태를 자체 수식 오류와 평가 진단으로 매핑합니다. 이 직접 백엔드 API는 Excel 오류 Variant를 반환하지 않습니다