VBS替换字符串--正则表达式怎么写?自己弄了一天了,还是没有搞出来????

sincor 2010-05-15 07:12:23
</strong></td>
<td bgcolor="#E4F1FB">05 </td><td bgcolor="#E4F1FB" class="fsfx_red_selceted">25 </td><td bgcolor="#E4F1FB" class="fsfx_red_selceted">08 </td><td bgcolor="#E4F1FB">04 </td><td bgcolor="#E4F1FB">09 </td><td bgcolor="#E4F1FB">07 </td><td bgcolor="#E4F1FB" class="fsfx_red_selceted">06 </td><td bgcolor="#E4F1FB">03 </td><td bgcolor="#E4F1FB">19 </td><td bgcolor="#E4F1FB">29 </td><td bgcolor="#E4F1FB">15 </td><td bgcolor="#E4F1FB">11 </td><td bgcolor="#E4F1FB">21 </td><td bgcolor="#E4F1FB">18 </td><td bgcolor="#E4F1FB">31 </td><td bgcolor="#E4F1FB">26 </td><td bgcolor="#E4F1FB" class="fsfx_red_selceted">12 </td><td bgcolor="#E4F1FB">10 </td><td bgcolor="#E4F1FB">20 </td><td bgcolor="#E4F1FB">32 </td><td bgcolor="#E4F1FB">13 </td><td bgcolor="#E4F1FB">16 </td><td bgcolor="#E4F1FB">17 </td><td bgcolor="#E4F1FB">28 </td><td bgcolor="#E4F1FB" class="fsfx_red_selceted">14 </td><td bgcolor="#E4F1FB">02 </td><td bgcolor="#E4F1FB">23 </td><td bgcolor="#E4F1FB">30 </td><td bgcolor="#E4F1FB">22 </td><td bgcolor="#E4F1FB">33 </td><td bgcolor="#E4F1FB">24 </td><td bgcolor="#E4F1FB">27 </td><td bgcolor="#E4F1FB" class="fsfx_red_selceted">01 </td> </tr>


上边是经过一定处理后的东西,最后想要得到的数据是: 05 25 04 09 07 06 03 19 29 15 11 21 18 31 26 32 13 ...

就是出去其他字符的33个数字

下面是我写的两个VBS脚本
遇到正则表达式卡住了!!!!!!!!

set http=createobject("Microsoft.XMLHTTP")
url="http://www.500wan.com/pages/info/ssq/inc/fsfx_inc.php?expect=10054"
http.open "get",url,false
http.send
code=GetSourceCode(Http.responsebody)
Dim fso, MyFile '
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("D:\我的文档\桌面\sourcecode.txt", True) '
MyFile.WriteLine(code) '将流对象写入文件对象testfile记事本里面
MyFile.Close '关闭文件

Function GetSourceCode(vIn) '功能函数GetSourceCode负责从网页中读取源代码
strReturn = ""
For i = 1 To LenB(vIn) '返回用于代表字符串的字节数。
ThisCharCode = AscB(MidB(vIn,i,1)) 'AscB 不是返回第一个字符的字符代码,而是返回首字节
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
GetSourceCode = strReturn
End Function



VBS 2---------

'从一个记事本里面读取数据写入另外一个记事本
Dim fso,ts1,ts2,ts3,MyFile1,MyFile2,MyFile3 '定义fso,ts流对象 和 两个文件对象MyFile,MyFile2
Set fso = CreateObject("Scripting.FileSystemObject") '创建文件系统对象fso
set ts=fso.opentextfile("D:\我的文档\桌面\sourcecode.txt",1,true) 'ts接受由fso打开的记事本testfile对象里面的数据
contents=ts.ReadAll






'首次打开截取到 红球统计按次数大小——————到——————————蓝球统计按次数大小,让其下面的东西变成唯一标识
Set MyFile1 = fso.CreateTextFile("D:\我的文档\桌面\tempData1.txt", True) '创建新的记事本对象lottery
str=contents
StartStr="红球统计按次数大小"
EndStr= "蓝球统计按次数大小"
result1= GetStrBetween(Str,StartStr,EndStr)
MyFile1.WriteLine(result1) '将参数value写入记事本lottery
MyFile1.Close '关闭文件对象


'再次打开tempData1记事本,再次截取"号码"————"</tbody>"之间的信息,并保存到tempData2中
Set MyFile2 = fso.CreateTextFile("D:\我的文档\桌面\tempData2.txt", True) '创建新的记事本对象lottery
set ts2=fso.opentextfile("D:\我的文档\桌面\tempData1.txt",1,true) 'ts接受由fso打开的记事本testfile对象里面的数据
Do While Not ts2.atendofstream
str =ts2.ReadAll
Loop
StartStr="号码"
EndStr= "</tbody>"
result2= GetStrBetween(Str,StartStr,EndStr)
MyFile2.WriteLine(result2) '将参数value写入记事本lottery
MyFile2.Close


'第三次打开lottery记事本,进行替换,将无用信息替换掉

Set MyFile3 = fso.CreateTextFile("D:\我的文档\桌面\Data.txt", True) '创建新的记事本对象lottery
Set ts3=fso.opentextfile("D:\我的文档\桌面\tempData2.txt",1,true) 'ts接受由fso打开的记事本testfile对象里面的数据


Do While Not ts3.atendofstream
str =ts3.ReadAll
Loop

Dim aimStr(10)
aimStr(0)="<td bgcolor="
aimStr(1)="#E4F1FB" '需要替换的无用信息
repStr= " "


For i=0 To 2
desStr=aimStr(i)
res = strReplace(str,desStr,repStr)

MyFile3.WriteLine(res)

'MyFile3.Close

'Set t0=fso.OpenTextFile("D:\我的文档\桌面\Data.txt",1,true)
'Do While Not ts3.atendofstream
' str =ts3.ReadAll
'Loop
i=i+1


Next
MyFile3.Close '替换成空白信息
'将参数value写入记事本lottery


'Set f2 = fso.GetFile("D:\我的文档\桌面\tempData1.txt")
'Set f3 = fso.GetFile("D:\我的文档\桌面\tempData2.txt") ' 删除文件。
'f2.Delete
'f3.Delete


'----封装的功能函数GetStrBetween读取两个字符串之间的字符----
Function GetStrBetween(Str,StartStr,EndStr)
StartStrPos = Instr(Str, StartStr)+Len(StartStr)
EndStrPos = Instr(Str,EndStr)
Length = EndStrPos - StartStrPos
Res= Mid(Str,StartStrPos,Length)
getStrBetween = Res '这句是返回值类型
End Function
'----函数功能结束----


'----替换函数封装----
Function strReplace(str,aimStr,repStr)

resStr= Replace(str , aimStr ,repStr)
strReplace=resStr

End Function
'----替换函数结束----








'***********************注释***************************************************
'总结

'value=ts.read(20)'用参数value接收由读取字符ts对象的前20个字符
'line=ts.readline
'contents=ts.ReadAll
'do while ts.atendofstream<>true



写这些目的是从一个网页读取数据

网页地址

http://www.500wan.com/pages/info/ssq/fsfx.php

这个网页中 红球按照次数大小排序 的33个号码

...全文
445 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-05-17
  • 打赏
  • 举报
回复
有点混淆视听。你专门的就问题描述一下把。

例如这样描述

aa11aa33aabb22bb44bbbc66cc7c77cc

我想获得所有的数字

就知道如何帮你写正则了。
sincor 2010-05-15
  • 打赏
  • 举报
回复
设计思路

首先生成 获取网站所有源代码的SourceCode.txt,取得所有源代码

其次,第一次截取SourceCode中红球统计按大小保存tempData1

再次,第二次截取tempData1中号码到table中含有33个号码排序的信息,并保存在tempData2中

最后,第三次打开tempData2进行替换,并最终保存在Data记事本中,删除tempData1,tempdata2
sincor 2010-05-15
  • 打赏
  • 举报
回复
调试环境 VBS Edit

4,008

社区成员

发帖
与我相关
我的任务
社区描述
它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。
社区管理员
  • vbScript社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧