首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 正則表達式 TPerlRegEx 實戰 (5):Compile 與 Study 優化執行效能

     編輯:Delphi

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:修改 Options 後需重新 Compile
  • Study 內建檢查:若未編譯會自動呼叫 Compile,可直接呼叫
  • 效能權衡:編譯增加啟動時間,換取執行速度提升
  • 適用閾值:模式簡單或僅執行 1-2 次時,編譯開銷可能大於收益

最佳實踐模式

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 是必備的效能優化組合。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved