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>

请问这是为什么?怎么解决?



...全文
273 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxq 2008-03-10
  • 打赏
  • 举报
回复
VBScript_RegExp_55_TLB
中没有execnext方法 ?能给个事例吗?

[Quote=引用 2 楼 fenger8293 的回复:]
要调用execnext方法
获取下一个
[/Quote]
gjw310 2008-03-10
  • 打赏
  • 举报
回复
学习
手指风 2008-03-06
  • 打赏
  • 举报
回复
要调用execnext方法
获取下一个
zxq 2008-03-05
  • 打赏
  • 举报
回复
则么没有人回复呀??

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧