使用TRegExpr删除无效的URL字符

时间:2013-03-30 06:56:21

标签: regex delphi

美好的一天。我似乎无法找到一个如何使用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;

1 个答案:

答案 0 :(得分:1)

根据提交和问题编辑判断,您正试图找出如何使用正则表达式执行替换。您需要的功能是TRegEx.Replace

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

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

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

或者如果您想使用实例方法方法,请执行以下操作:

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