Compile 與 Study 方法可預先編譯正則表達式,大幅提升重複執行時的效能。
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);
reg.RegEx := 'ab';
reg.Options := [preCaseLess]; { 不區分大小寫 }
reg.Compile; { 手動編譯表達式 }
reg.Study; { 分析優化,內部會自動檢查是否已編譯 }
reg.Replacement := '◆';
reg.Subject := 'abAbaB';
reg.ReplaceAll;
ShowMessage(reg.Subject); { 輸出: ◆◆◆ }
FreeAndNil(reg);
end;
| 方法 | 功能 | 適用場景 |
|---|---|---|
Compile | 將正則模式編譯為內部位元碼 | 模式固定、多次執行、模式複雜 |
Study | 分析模式特徵產生優化資訊 (如首字元集合) | 大量文字搜尋、模式複雜、需最大效能 |
Options 後需重新 CompileCompile,可直接呼叫procedure ProcessLargeText(const Pattern, Text: string);
var reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);
try
reg.RegEx := Pattern;
reg.Options := [preCaseLess, preMultiLine];
reg.Compile;
reg.Study;
reg.Subject := Text;
{ 多次 Match/Replace 操作 }
while reg.MatchAgain do
{ 處理匹配結果 }
;
finally
reg.Free;
end;
end;
對於固定模式的批次文字處理,Compile + Study 是必備的效能優化組合。