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

Delphi 正則表達式 TPerlRegEx 實戰 (3):Start/Stop 限定搜尋範圍

     編輯:Delphi

Start 與 Stop 屬性可限定正則表達式在字串的特定區間內搜尋/替換,實現區域性處理。

完整範例:分段替換

var 
  reg: TPerlRegEx; 
begin 
  reg := TPerlRegEx.Create(nil); 
  reg.RegEx := 'ab'; 
  reg.Replacement := '◆'; 
  
  { 1. 僅替換第 1-2 字元區間 }
  reg.Subject := 'ababab'; 
  reg.Start := 1; 
  reg.Stop := 2; 
  while reg.MatchAgain do reg.Replace; 
  ShowMessage(reg.Subject); { 輸出: ◆abab }
  
  { 2. 僅替換第 3-4 字元區間 }
  reg.Subject := 'ababab'; 
  reg.Start := 3; 
  reg.Stop := 4; 
  while reg.MatchAgain do reg.Replace; 
  ShowMessage(reg.Subject); { 輸出: ab◆ab }
  
  { 3. 僅替換第 5-6 字元區間 }
  reg.Subject := 'ababab'; 
  reg.Start := 5; 
  reg.Stop := 6; 
  while reg.MatchAgain do reg.Replace; 
  ShowMessage(reg.Subject); { 輸出: abab◆ }
  
  FreeAndNil(reg); 
end;

屬性說明

屬性型別索引基底說明
StartInteger1-based搜尋起始位置 (含)
StopInteger1-based搜尋結束位置 (含)

關鍵特性

  • 1-based 索引:符合 Delphi 字串慣例,Start := 1 代表從第一字元開始
  • 包含邊界:Start := 1, Stop := 2 覆蓋第 1、2 兩個字元
  • 僅影響搜尋:不修改 Subject 內容,僅限制 Match/MatchAgain 掃描範圍
  • 搭配 Replace 使用:可實現「只替換第 N 次出現」等精細控制

實用模式:替換第 N 次匹配

function ReplaceNth(const Subject, Pattern, Replacement: string; N: Integer): string; 
var reg: TPerlRegEx; count: Integer; 
begin 
  reg := TPerlRegEx.Create(nil); 
  try 
    reg.RegEx := Pattern; 
    reg.Replacement := Replacement; 
    reg.Subject := Subject; 
    count := 0; 
    while reg.MatchAgain do 
    begin 
      Inc(count); 
      if count = N then 
      begin 
        reg.Replace; 
        Break; 
      end; 
    end; 
    Result := reg.Subject; 
  finally 
    reg.Free; 
  end; 
end;

Start/Stop 為區域性文字處理提供了底層支援,配合迴圈可實現各種精確控制需求。

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