正则表达式有关问题,解决给分了
正则表达式问题,解决给分了!
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);
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);