Keine Ahnung, aber das UTF-8 solltest du in den Options dennoch unbedingt setzen.
Isses so schneller? (siehe [edit/add])
Delphi-Quellcode:
type
TPerlRegEx2 = class(TPerlRegEx)
private class var
FTables: AnsiString;
public
constructor Create;
end;
constructor TPerlRegEx2.Create;
begin
if FTables = '' then
FTables := pcre_maketables;
FState := [preNotEmpty];
FCharTable := PAnsiChar(FTables);
FPCREOptions := PCRE_UTF8 or PCRE_NEWLINE_ANY;
end;
Ansonsten wenigsten so:
Delphi-Quellcode:
constructor TPerlRegEx2.Create;
begin
State := [preNotEmpty];
Options := [preCaseLess]; // einmal umschreiben, da sonst Änderung nicht übernommen wird
Options := [];
end;
[edit]
Mist, immer diese privaten Property, wo keiner mehr ran kommt. (warte mal ein Sekündchen)
[add]
Delphi-Quellcode:
// erweiterte RTTI darf nicht deaktivert sein
uses
RegularExpressionsAPI, RegularExpressionsCore,
RTTI;
type
TPerlRegEx2 =
class(TPerlRegEx)
private class var
FTables: PAnsiChar;
public
class constructor Create;
class destructor Destroy;
constructor Create;
end;
class constructor TPerlRegEx2.Create;
begin
FTables := pcre_maketables;
end;
class destructor TPerlRegEx2.Destroy;
begin
pcre_dispose(
nil,
nil, FTables);
end;
constructor TPerlRegEx2.Create;
begin
State := [preNotEmpty];
with TRttiContext.Create.GetType(TPerlRegEx2)
do begin
GetField('
FCharTable').SetValue(Self, TValue.From<PAnsiChar>(FTables));
GetField('
FPCREOptions').SetValue(Self, Integer(PCRE_UTF8
or PCRE_NEWLINE_ANY));
end;
end;