大家帮忙看看关于RegExp的这代码,哪里错了?
Set regEx2 = New RegExp '//运行这句页面就始终处在等待localhost状态,经过步步查找,发现这句有问题,不知道如何解决,请大家帮忙看看,谢谢!
代码如下
++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dim regEx, retVal
Set regEx = New RegExp
regEx.Pattern =patrn
regEx.IgnoreCase = true
regEx.Global = True
patrn= " <div class=g.*> (.*) </div> "
Set Matches= regEx.Execute(pages) //pages 是抓取到的一段html
for each pass in Matches
Set regEx2 = New RegExp '//运行这句页面就始终处在等待localhost状态,经过步步查找,发现这句有问题
patrn2= " <a href= "&chr(34)& "(.*) "&chr(34)& ".*> (.*) </a> <td class=j> <font size=-1> ( <a href=.*> .* </a> <br> ) "
regEx2.Pattern = patrn2
regEx2.IgnoreCase = True
regEx2.Global = True
i=0
reDim myArray(18)
Set Matches2= regEx2.Execute(pass)
sum=Matches2.count
if(sum> 0) then
For Each Match in Matches2
myArray(i)=Match.value
i=i+1
Next
parse_page=myArray //parse_page 为一个过程名
set myArray=nothing
set i=nothing
..................略
------解决方案--------------------for each pass in Matches
这句的next呢?
------解决方案--------------------应该是楼上所指出的问题
------解决方案--------------------Matches 集合示例
正则表达式 Match 对象的集合。
说明
Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。与独立的 Match 对象属性相同,Matches `集合的一个属性是只读的。
在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引。
下面的代码将说明如何使用正则表达式查找获得 Matches 集合,以及如何循环遍历集合:
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) ' 执行搜索。
For Each Match in Matches ' 循环遍历Matches集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is ' "
RetStr = RetStr & Match.Value & " '. " & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest( "is. ", "IS1 is2 IS3 is4 "))
你的遍历集合里面包含着另一个集合,只能自己逐项检查了
还有可能patrn2= " <a href= "&chr(34)& "(.*) "&chr(34)& ".*> (.*) </a> <td class=j> <font size=-1> ( <a href=.*> .* </a> <br> ) "的匹配模式有问题.*加个?变成非贪婪的匹配
patrn2= " <a href= "&chr(34)& "(.*?) "&chr(34)& ".*?> (.*?) </a> <td class=j> <font size=-1> ( <a href=.*> .*? </a> <br> ) "