为什么正则匹配不成功?
本帖最后由 yigao 于 2009-10-7 15:59 编辑想将类似下面网页源文件中的投票问题列表抓出来,但使用正则匹配总是不成功。
http://ask.koubei.com/dir/vote_ans.html
先看看代码:#include <file.au3>
#include <INet.au3>
#include <File.au3>
InetGet ("http://ask.koubei.com/dir/vote_ans.html","d:\My AutoIt\temp1.txt")
$file = FileRead("d:\My AutoIt\temp1.txt")
$file = BinaryToString($file,4)
_FileCreate("d:\My AutoIt\temp.txt")
FileWrite("d:\My AutoIt\temp.txt",$file)
FileDelete("d:\My AutoIt\temp1.txt")
Dim $aRecords
If Not _FileReadToArray("d:\My AutoIt\temp.txt",$aRecords) Then
MsgBox(4096,"", " Error reading:" & @error)
Exit
EndIf
For $x = 1 to $aRecords
$array=StringRegExp($aRecords[$x], '/question/\d{13}.html', 1)
Next
FileDelete("d:\My AutoIt\temp.txt")因为源文件中存在多个/question/\d{13}.html的内容,想一次性抓出来。但下面这句
$array=StringRegExp($aRecords[$x], '/question/\d{13}.html', 1)
得到的实际结果只有一个,仿佛的到的不是数组。不知道为什么。
曾经尝试用filereadline将文件逐行读入然后正则,也没得到所要求的结果。
请教解决办法,谢谢! #include <INet.au3>
#include <array.au3>
$temp=_INetGetSource ("http://ask.koubei.com/dir/vote_ans.html")
$temp=StringSplit($temp,@CRLF)
For $i=1 To $temp
If Not StringInStr($temp[$i],"/question/") Then ContinueLoop
$Rul=StringRegExp($temp[$i],"/question/\d{13}\.html",1)
If @error<>0 Then ContinueLoop
FileWriteLine("url.txt",$Rul)
Next试下这样 #include <INet.au3>
InetGet ("http://ask.koubei.com/dir/vote_ans.html","d:\My AutoIt\temp1.txt")
$file = FileRead("d:\My AutoIt\temp1.txt")
$array=StringRegExp($file, '/question/\d{13}.html', 3)
FileDelete("d:\My AutoIt\temp1.txt")
for $i=0 to UBound($array)-1
MsgBox(0,0,$array[$i],2)
Next 感谢两位,都验证通过了。 高手的代码看得很舒服
页:
[1]