读书人

在线求解-VB怎么获取两个标签之间的数

发布时间: 2013-01-08 14:02:13 作者: rapoo

在线求解-VB如何获取两个标签之间的数据
最近因为这一个事快把我给麻烦死了,不知道是不是因为我的是精简版的原因,有好多的正则表达式都不能使用,比如要获取一个网页的标题,我可以这样写<title>.*</title>但是获取出来的会包括两个标签。
我不想要那两个标签。然后我通过百度问答知道可以这样写(?<=<title>).*(?=</title>)
这一个表达式在测试器里面是可以使用的。但是到VB里面就不能使用了,
在下面我会贴上我的代码。都是复制过来的,我也只是一个菜鸟,不过我就是不知道为什么在VB里面就是不能使用,
我看大家说用VB.net但是我查了一下,VB.net和VB是大不相同的。要是再重新学VB.net太难了。没有时间。



在线等求解
[解决办法]
这跟精简版扯不上什么关系。首先你要认识到不到种的正则表达式组件的正则语法一般都不是完全相同的,你搜索时也要看清别人说的是不是你的vbscript.dll中的那个RegExp组件。我想你要的是这个效果吧

'--------------------------------------------------- 


' 过程名 : TestRegExp2
' 时间 : 2012-12-1 15:06
' 作者 : 杨过.网狐.cn(csdn bcrun)
' 功能 :
' 说明 :
' 备注 : CSDN之VB一群:283362041
'---------------------------------------------------
'
Function TestRegExp2(myPattern As String, myString As String)
Dim objRegExp As RegExp '定义对象
Dim objMatch As Match
Dim colMatches As MatchCollection '对象包含有关匹配字符串的信息
Dim RetStr As String
Dim hanzi As String
Set objRegExp = New RegExp
objRegExp.Pattern = myPattern '传入参数,用来定义正则表达式
objRegExp.IgnoreCase = True
objRegExp.Global = True
If objRegExp.Test(myString) Then '正则表达式与字符串成功匹配
Set colMatches = objRegExp.Execute(myString)
For Each objMatch In colMatches
hanzi = objMatch.SubMatches(0)

Text2.Text = Text2.Text & hanzi & vbCrLf
Next
Else
RetStr = "String Matching Failed"
End If
TestRegExp2 = RetStr
End Function
Private Sub Command1_Click()
On Error Resume Next
If Text3.Text = "" Then
MsgBox "请填写正则表达式", vbAbortRetryIgnore
Else

Dim a
Text3.Text = "\<title\>(.*)\</title\>"
a = (TestRegExp2(Text3.Text, Web1.Document.documentElement.innerHTML))
End If


End Sub


[解决办法]
Option Explicit


'---------------------------------------------------
' 过程名 : TestRegExp2
' 时间 : 2012-12-1 15:06
' 作者 : 杨过.网狐.cn(csdn bcrun)
' 功能 :
' 说明 :
' 备注 : CSDN之VB一群:283362041


'---------------------------------------------------
'引用 :Microsoft VBScript Regular Expressions 5.5
Private Sub Command1_Click()
On Error Resume Next
Text1.Text = TestRegExp2(Text1.Text)
End Sub

Function TestRegExp2$(myString As String)
Dim objRegExp As RegExp '定义对象
Dim objMatch As Match
Dim colMatches As MatchCollection '对象包含有关匹配字符串的信息
Dim RetStr As String
Dim hanzi As String
Set objRegExp = New RegExp
objRegExp.Pattern = "<title>(.*)</title>" '传入参数,用来定义正则表达式
objRegExp.IgnoreCase = True
objRegExp.Global = True
If objRegExp.Test(myString) Then '正则表达式与字符串成功匹配
Set colMatches = objRegExp.Execute(myString)
For Each objMatch In colMatches
RetStr = RetStr & objMatch.SubMatches(0) & vbCrLf
Next
Else
RetStr = "String Matching Failed"
End If
TestRegExp2 = RetStr
End Function


在版主bcrun代码的基础上改了下,亲测通过!!

读书人网 >VB

热点推荐