傻娃 发表于 2010-7-15 09:10:55

[已解决]请教个正则问题,

本帖最后由 傻娃 于 2010-7-16 09:46 编辑

#Region AutoIt3Wrapper 预编译参数(常用参数)
#AutoIt3Wrapper_Icon=                                                                                 ;图标,支持EXE,DLL,ICO
#AutoIt3Wrapper_OutFile=                                                                        ;输出文件名
#AutoIt3Wrapper_OutFile_Type=exe                                                        ;文件类型
#AutoIt3Wrapper_Compression=4                                                                ;压缩等级
#AutoIt3Wrapper_UseUpx=y                                                                         ;使用压缩
#AutoIt3Wrapper_Res_Comment=                                                                 ;注释
#AutoIt3Wrapper_Res_Description=                                                        ;详细信息
#AutoIt3Wrapper_Res_Fileversion=                                                        ;文件版本
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=p                                ;自动更新版本
#AutoIt3Wrapper_Res_LegalCopyright=                                                 ;版权
#AutoIt3Wrapper_Change2CUI=N                                                   ;修改输出的程序为CUI(控制台程序)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数设置完成
#cs ____________________________________

Au3 版本:
脚本作者:
        Email:
        QQ/TM:
脚本版本:
脚本功能:

#ce _______________脚本开始_________________

#include <inet.au3>

#include <Array.au3>

#include <file.au3>

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <IE.au3>

_IEErrorHandlerRegister ()

GUICreate("", 500, 450, 10, 10, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)

$oIE = _IECreateEmbedded()

$web = "file://c:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/1.htm"

$GUIActiveX = GUICtrlCreateObj($oIE, -2, -2, 500, 420)

$Reload = GUICtrlCreateButton("刷 新", 0, 420, 80, 30)

$GUI_Button_Close = GUICtrlCreateButton("退 出", 420, 420, 80, 30)

createhtm()

$oIE.navigate($web)

$oIE.navigate($web)

$oIE.refresh

GUISetState(@SW_SHOW)

While 1

      $msg = GUIGetMsg()

      Select

                Case $msg = $GUI_Button_Close

                        ExitLoop

                Case $msg=$Reload

                        createhtm()

                        $oIE.navigate($web)

                  $oIE.refresh

      EndSelect

WEnd



Func createhtm()

      InetGet("http://www.autoitx.com/forum-4-1.html",@TempDir&"\temp.txt")

      $Str=FileRead(@TempDir&"\temp.txt")

      $sR = StringRegExp($str, "\<a\h\S*\h+title\=\'\S*\h+target\=\'\_blank\'\>\S*\<\/a\>", 3)

      For $i=0 To UBound($sR)-1

                $sR[$i]=StringReplace($sR[$i],"<a href='","<a href='http://www.autoitx.com/")&"<br>"

      Next

      _FileWriteFromArray(@TempDir&"\1.htm",$sR)

      If Not(FileExists(@TempDir&"\1.htm")) Then

                createhtm()

      EndIf

EndFunc




获取不到呢,刚学正则,请高手指点.

水木子 发表于 2010-7-15 09:54:31

你是想获取什么东东呢?

傻娃 发表于 2010-7-15 10:49:18

回复 2# 水木子


    我想获取这个板块的帖子,然后在GUI里显示出来,

afan 发表于 2010-7-15 11:36:18

最好别拿咱们论坛玩,多少会影响点浏览~#include <INet.au3>
#include <Array.au3>

$Url = 'http://www.autoitx.com/forum-4-1.html'
Tooltip('正在获取源码,请稍候……')
$str = _INetGetSource($Url)
$sR = StringRegExp($str, '\[\<.+>(.+)</a></span>', 3)
If @error Then Exit MsgBox(0, 0, '未找到匹配~')
Tooltip('')
_ArrayDisplay($sR, '标题')

傻娃 发表于 2010-7-15 12:05:27

谢谢楼上大哥,,

<th class="subject new">
<label>&nbsp;</label>
<em>[<a href="forumdisplay.php?fid=101&amp;filter=type&amp;typeid=14">杂货其他</a>]</em><span id="thread_672264"><a href="thread-672264-1-1.html">求购二手电动车</a></span>
</th>


如上,如果获取上面那个数字672264   该怎么写?   


这个是网址
http://bbs.zbgl.net/forum-101-1.html

傻娃 发表于 2010-7-15 12:07:19

回复 4# afan


    我把(.+)往前移了移不行。

傻娃 发表于 2010-7-15 12:11:13

回复 4# afan


$sR = StringRegExp($str, '\[\<.+>\<a\h+href=(.+)>*</a></span>', 3)


通过这样获取到一些,不知道引号用什么符号代替呢?

傻娃 发表于 2010-7-15 12:24:01

还是搞不出怎么能弄的只获取数字

afan 发表于 2010-7-15 12:38:14

你其实是需要“thread-672264-1-1.html”
StringRegExp($str, 'href=\"(thread-\d+-\d+-\d+.html)\">', 3)

wsfda 发表于 2010-7-15 12:50:35

虽然还不懂,但是要顶

傻娃 发表于 2010-7-16 09:46:47

回复 9# afan


    谢谢大哥,学习了
页: [1]
查看完整版本: [已解决]请教个正则问题,