找回密码
 加入
搜索
查看: 1304|回复: 4

为什么正则匹配不成功?

[复制链接]
发表于 2009-10-7 13:54:17 | 显示全部楼层 |阅读模式
本帖最后由 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[0]
   $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将文件逐行读入然后正则,也没得到所要求的结果。
请教解决办法,谢谢!
发表于 2009-10-7 14:31:59 | 显示全部楼层
#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[0]
        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[0])
Next
试下这样

评分

参与人数 1金钱 +1 收起 理由
yigao + 1 验证通过,谢谢

查看全部评分

发表于 2009-10-7 14:43:55 | 显示全部楼层
#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金钱 +1 收起 理由
yigao + 1 验证通过,谢谢!

查看全部评分

 楼主| 发表于 2009-10-7 15:58:48 | 显示全部楼层
感谢两位,都验证通过了。
发表于 2010-3-30 07:59:20 | 显示全部楼层
高手的代码看得很舒服
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-7-5 11:01 , Processed in 0.089292 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表