Delphi 正则表达式语法(1): 关于大小写与中文

时间:2023-06-28 22:43:41
Delphi 正则表达式语法(1): 关于大小写与中文
//替换一般字符串
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := '我爱DELPHI, 但Delphi不爱我!';
  reg.RegEx  := 'Delphi';
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: 我爱DELPHI, 但◆不爱我!   FreeAndNil(reg);
end;

//不区分大小写
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := '我爱DELPHI, 但Delphi不爱我!';
  reg.RegEx  := 'Delphi';
  reg.Replacement := '◆';
  reg.Options := [preCaseLess]; //不区分大小的设定, 默认是区分的
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: 我爱◆, 但◆不爱我!   FreeAndNil(reg);
end;

//试试中文替换
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := '我爱DELPHI, 但Delphi不爱我!';
  reg.RegEx  := '我';
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆爱DELPHI, 但Delphi不爱◆!   FreeAndNil(reg);
end;

//如果不区分大小写, 竟然也不区分中文字了
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := '我爱DELPHI, 但Delphi不爱我!';
  reg.RegEx  := '我';
  reg.Replacement := '◆';
  reg.Options := [preCaseLess]; //也设定不区分大小
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆◆DELPHI, ◆Delphi◆◆◆!   FreeAndNil(reg);
end;
//我测试了不同的汉字, 除了乱以外,没有规律; 所有如果操作汉字暂时不要指定 preCaseLess