libpaspcre2
1.0.0
libpaspcre2는 perl 호환 정규 표현식 라이브러리 (PCRE2)에 대한 델파이 및 객체 파스칼 바인딩입니다. 라이브러리는 PERL 5와 동일한 구문 및 시맨틱을 사용하여 정규 표현 패턴 일치를 구현하는 일련의 함수입니다.
도서관이 테스트되었습니다
소스를 가져 와서 소스 디렉토리를 프로젝트 검색 경로에 추가하십시오. FPC의 경우 소스 디렉토리를 FPC.CFG 파일에 추가하십시오.
저장소 git clone https://github.com/isemenkov/libpaspcre2 복제하십시오.
사용하려는 단위를 uses 절에 추가하십시오.
테스트 프레임 워크는 다음 성분으로 구성됩니다.
unit-tests 디렉토리에 위치한 테스트 러너 프로젝트.libpaspscre2.pas 파일에는 Pascal 프로그램 에서이 라이브러리를 사용하기위한 PCRE2 번역 헤더가 포함되어 있습니다. www.pcre.org 웹 사이트에서 C API 문서를 찾을 수 있습니다.
uses
libpaspcre2, utils.api.cstring;
var
re : pcre2_code_8;
rc : Integer;
pattern, subject : PCRE2_SPTR8;
error_buffer : string[ 255 ];
subject_length : Int64;
error_number : Integer;
error_offset : PCRE2_SIZE;
ovector : PPCRE2_SIZE;
match_data : ppcre2_match_data_8;
substring : string;
begin
pattern := PCRE2_SPTR8(API.CString.Create( ' (?:D|^)(5[1-5][0-9]{2}(?: |-|)[0-9]{4} ' +
' (?: |-|)[0-9]{4}(?: |-|)[0-9]{4})(?:D|$) ' ).ToPAnsiChar);
subject := PCRE2_SPTR8(API.CString.Create( ' 5111 2222 3333 4444 ' ).ToPAnsiChar);
subject_length := API.CString.Create( ' 5111 2222 3333 4444 ' ).Length;
re := pcre2_compile_8(pattern, PCRE2_ZERO_TERMINATED, 0 , @error_number, @error_offset, nil );
if re = nil then
begin
pcre2_get_error_message_8(error_number, PPCRE2_UCHAR8(@error_buffer[ 0 ]), 256 );
Fail(Format( ' PCRE2 compilation failed at offset %d: %s ' , [error_offset, error_buffer]));
end ;
match_data := pcre2_match_data_create_from_pattern_8(re, nil );
rc := pcre2_match_8(re, subject, subject_length, 0 , 0 , match_data, nil );
if rc < 0 then
begin
case rc of
PCRE2_ERROR_NOMATCH :
begin
pcre2_match_data_free_8(match_data);
pcre2_code_free_8(re);
Fail( ' No match ' );
end ;
end ;
end ;
{
ovector := pcre2_get_ovector_pointer_8(match_data);
if ovector^ > (ovector + 1)^ then
Fail('Error');
substring := Copy(PChar(subject), ovector^, (ovector + 1)^ - ovector^);
pcre2_match_data_free_8(match_data);
pcre2_code_free_8(re);
}
end ;