環境:Win7+XE4
uses System.RegularExpressionsCore;
:
procedure TForm1.Button1Click(Sender: TObject);
var
RE: TPerlRegEx;
slFile,slTmp: TStringList;
begin
RE:=TPerlRegEx.Create;
slFile:=TStringList.Create;
slTmp:=TStringList.Create;
slFile.LoadFromFile(FOD1.FileName);
RE.Subject:=slFile.Text;
RE.Options:=[preCaseLess]; //忽略大小寫
slTmp.Delimiter:='|';
slTmp.Text:=Memo1.Lines.Text;
RE.RegEx:='([\s|\.|\=|\[])('+slTmp.DelimitedText+')([\s|\.|\]])';
while RE.MatchAgain do begin
RE.Replacement:='$1GA00_$2$3'; //也可以 " \ " 替代 " $ " 結果相同
RE.Replace;
end;
FreeAndNil(RE);
FreeAndNil(slFile);
FreeAndNil(slTmp);
end;
備註:
TPerlRegEx.ComputeReplacement; //經樣式運算後的替代字串
TPerlRegEx.MatchedText; //符合樣式的字串等同 TPerlRegEx.Groups[0]
TPerlRegEx.Replacement:=''; //經運算後似乎無法讓Replace再利用,所以看使用狀況必須重覆執行
沒有留言:
張貼留言