1

再会。我似乎找不到如何使用 TRegExpr 组件对无效字符进行简单替换的示例。例如我有一个字符串 = 'abcdeg3fghijk'; 我想替换所有无效字符,例如数字“3”,如何用 TRegExpr 处理它以替换所有无效字符。我的目的是学习如何使用 TRegExpr 来构建一个简单的 url 清理器/验证器。

procedure TForm1.Button3Click(Sender: TObject);
var
  RegExp: TRegExpr;
  astr:string;
begin
  astr:='h"ttp://ww"w.msn."com~~~';
  // I want to clean the string to remove all non valid chars

  //this is where I am lost

  RegExp:=TRegExpr.Create;
  try
    RegExp.Expression:=RegExpression;  
  finally
    RegExp.Free; 
  end;
end;
4

1 回答 1

1

从评论和问题编辑来看,您正试图弄清楚如何使用正则表达式执行替换。您需要的功能是TRegEx.Replace.

有很多超载。最简单的使用是类函数。例如:

NewValue := TRegEx.Replace(OldValue, '3', '4');

将所有出现的 3 替换为 4。

或者,如果您想使用实例方法方法,请这样做:

var
  RegEx: TRegEx;
....
RegEx.Create('3');
NewValue := RegEx.Replace(OldValue, '4');

请记住,这TRegEx是一个记录,一个值类型。没有Free电话,也不需要try/finally。我个人认为Create命名非常糟糕。Initialize如果我一直在设计字体,我会更喜欢TRegEx

使用实例方法方法可以编译表达式,并加快将相同表达式重复匹配到不同输入数据的性能。我不知道这对你是否重要。如果没有,则使用更易于使用的类函数接口。

您显然会扩展它以使用有用的正则表达式进行替换!

Delphi 使用的 PCRE 正则表达式风格的文档在这里:http ://www.regular-expressions.info/pcre.html

于 2013-03-30T08:25:22.577 回答