unit Unit1; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,RegularExpressions; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private function MyMatchEvaluator(const Match: TMatch): string; //TMatchEvaluator = function(const Match: TMatch): string of object; public end; var Form1: TForm1; implementation {$R *.dfm} const pattern = '[A-Z]+\d+'; txt = 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text := TRegEx.Replace(txt,pattern,MyMatchEvaluator); //aaa1 bbb2 aa11 bb22 a111 b222 AAAA end; function TForm1.MyMatchEvaluator(const Match: TMatch): string; begin Result := LowerCase(Match.Value); end; end.