正则表达式有关问题,解决给分了

正则表达式问题,解决给分了!

function   TSDIAppForm.RegExpReplace():   Boolean;   //   返回是否匹配
var
    vRegExp:   OleVariant;
    mString:   WideString;   //   分析的字符串
    vr:string;
    str:string;          
begin
    //   创建正值对象
    vRegExp   :=   CreateOleObject( 'VBScript.RegExp ');
    //   样板表达式
    vRegExp.Pattern   :=   '\b(? <month> \d{1,2})-(? <day> \d{1,2})-(? <year> \d{2,4})\b ';
    vr   :=   '${day}${month}${year} ") ';
    str   :=   '02-09-2006 ';
    //   忽略大小写
    vRegExp.IgnoreCase   :=   true;
    //   全局适用
    vRegExp.Global   :=   true;
   
    vr   :=   vRegExp.Replace(str,vr);
    ShowMessage(vr);
    Result   :=   True;

end;  


以上这个函数运行出错,各位大虾帮忙,有谢!

------解决方案--------------------
uses

comobj;
------解决方案--------------------
我试了一下,的确有此问题,可能是D与VB用的Regex版本不的关系(我的系统中有1.0与5.5二个版本),而经测试D版的Regex不支持? <aaa> 这种变量定义,但用以下方法可实现你的功能:
var
vRegExp: OleVariant;
mString: WideString; // 分析的字符串
vr:string;
str:string;
begin
// 创建正值对象
vRegExp := CreateOleObject( 'VBScript.RegExp ');
// 样板表达式
vRegExp.Pattern := '\b(\d{1,2})/(\d{1,2})/(\d{2,4})\b '; //不用变量
vr := '$1-$2-$3 '; //用数字代码
str := '02-09-2006 ';
// 忽略大小写
vRegExp.IgnoreCase := true;
// 全局适用
vRegExp.Global := true;

vr := vRegExp.Replace(str,vr);
ShowMessage(vr);