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