shano 发表于 2010-9-12 11:47:40

求一正则(已解决)

本帖最后由 shano 于 2010-9-14 00:16 编辑

目标是抓取一网页上的代理IP地址http://www.proxyfire.net/index.php?pageid=socks5proxylist

首先我用_IEDocReadHTML读取的源码 但是网页加密无法抓取到IP
所以改用笨方法 发送CTRL+C 然后从剪切板获取目前遇到的问题是
复制到的代理格式如下 24.20.241.75⃧ 27977 SOCKS5UNITED
中间那个“⃧ ” 应该怎么用正则替换成":"
目的格式为24.20.241.75:27977

#include <ie.au3>
#include <File.au3>
#include <Array.au3>

$oIE= _IECreate("http://www.proxyfire.net/index.php?pageid=socks5proxylist")
_IELoadWait($oIE)
Sleep(2000)
_IEAction ($oIE, "selectall");全选
Sleep(2000)
Send("^c") ;复制
Send("^c") ;复制

Dim $sR,$str,$i
$str = ClipGet()   
MsgBox(0,0,$str); 显示获取到的内容代理IP在最下面几行

$sR= StringRegExp($str,'\d{2}(.+?)SOCKS5', 2)         ;正则匹配以数字开头 以SOCKS5结束的行   
$sR= StringRegExpReplace($sR,'SOCKS5', '')    ;到这里都没问题提取到的格式为24.20.241.75⃧ 27977
$sR= StringRegExpReplace($sR,'?', ':')            ;问题就在这句了不知道怎么匹配那个“⃧”
MsgBox(0,0,$sR)




请各位朋友帮忙看看

kxing 发表于 2010-9-12 12:20:24

$str="24.20.241.75? 27977 SOCKS5UNITED"
$astr=StringRegExp($str,"(+?)\? (\d+).*",3)
If Not @Error Then msgbox(0,'',$astr&":"&$astr)

afan 发表于 2010-9-12 12:23:02

本帖最后由 afan 于 2010-9-12 12:25 编辑

$Str = '24.20.241.75⃧ 27977 SOCKS5UNITED'
$str = StringRegExpReplace($str, '(\d+\.[\d\.]+)[^\d]+(\d+).+', '$1:$2')
Msgbox(0, '替换后', $str)$Str = '24.20.241.75⃧ 27977 SOCKS5UNITED'
$str = StringRegExpReplace($str, '(\d+\.[\d\.]+)[^\d]+(\d+).+', '$1:$2')
Msgbox(0, '替换后', $str)

kxing 发表于 2010-9-12 12:37:01

无语了,终于体会到$1的作用。。。

liufenglg 发表于 2010-9-17 11:17:33

无语了,终于体会到$1的作用。。。
kxing 发表于 2010-9-12 12:37 http://www.autoitx.com/images/common/back.gif


    什么作用
页: [1]
查看完整版本: 求一正则(已解决)