TRegExp在delphi中和vbscript中的效果怎么不一样(的问题! VBScript_RegExp_55_TLB)
zxq 2008-03-05 11:48:46 VB
<script language="vbscript">
Function RegExpTest(patrn, strng)
Dim regEx,Match,Matches '建立变量。
Set regEx = New RegExp '建立一般表达式。
regEx.Pattern= patrn '设置模式。
regEx.IgnoreCase = True '设置是否区分大小写。
regEx.Global=True '设置全局可用性。
set Matches=regEx.Execute(strng) '重复匹配集合
' RegExpTest = regEx.Execute(strng) '执行搜索。
for each match in matches '重复匹配集合
RetStr=RetStr&Match.Value
Next
RegExpTest=RetStr
End Function
str = "<intput value=1232><intput value=1233><intput value=1234>"
str1 = "<intput.*?>"
MsgBox(RegExpTest(str1,str))
</script>
返回:<intput value=1232><intput value=1233><intput value=1234>
Delphi
function getimgs(str : wideString;regexpstr : String) : String;
var
reg: TRegExp; //声明正则表达式变量
machs: IMatchCollection;
Matchs: Match;
submatch: ISubMatches;
i, j: integer;
Begin
Result := '';
reg := TRegExp.Create(nil); //建立
reg.IgnoreCase := True;
reg.Global := True;
reg.Pattern := regexpstr;
machs := reg.Execute(str) as IMatchCollection;
for i := 0 to machs.Count - 1 do
begin
Matchs := machs.Item[i] as Match;
Result := Result + '||' + matchs.Value;
end;
FreeAndNil(reg); //因为建立时属主给了 nil, 这里没有使用 reg.Free
end;
getimgs('<intput value=1232><intput value=1233><intput value=1234>','<intput.*?>')
返回:<intput value=1232>
请问这是为什么?怎么解决?