VB6.0如何使用正则表达式
VB6.0如何使用正则表达式
分类: VB6.0基础编程
2007-10-16 11:15
3674人阅读
评论(10)
收藏
举报
最近在用VB6解决一个网页解析的应用,涉及到了正则。如何在VB6中使用正则表达式,这个在MS网站上有介绍,不过介绍的不是很全面。下面结合MS网站的内容和搜索到的东西,自己汇总一下。 引用了Microsoft VBScript Regular Expressions 5.5 后就可以声明正则相关对象了。主要有三个对象:RegExp、MatchCollection、Match。
2. MatchCollection 是集合对象,包含有关匹配字符串的信息,该对象包含每个成功匹配的 Match 对象。
3. Match 是成功匹配的对象。
相关示例参照MS的网站:http://support.microsoft.com/kb/818802/zh-cn。MS上没有介绍的几个属性和方法的使用,见下面的几个简单示例: 1. RegExp的Test方法:
Function
bTest(ByVals
As
String
,ByValp
As
String
)
As
Boolean
Dim re As RegExp Set re = New RegExp re.IgnoreCase = False ' 设置是否匹配大小写 re.Pattern = p bTest = re.Test(s) EndFunction Private Sub Command1_Click() Dim s As String Dim p As String s = " 我的邮箱:test@163.com。欢迎致电! " ' 测试字符串中是否包含数字: p = "/ d+ " MsgBox bTest(s,p) ' 测试字符串中是否全是由数字组成: p = " ^/d+$ " MsgBox bTest(s,p) ' 测试字符串中是否有大写字母: p = " [A-Z]+ " MsgBox bTest(s,p) EndSub 2. RegExp的Replace方法:
Function
StrReplace(s
As
String
,p
As
String
,r
As
String
)
As
String
Dim re As RegExp Set re = New RegExp re.IgnoreCase = True re.Global = True re.Pattern = p StrReplace = re.Replace(s,r) EndFunction Private Sub Command2_Click() Dim s As String ' 字符串 Dim p As String ' 正则表达式 Dim r As String ' 要替换的字符串 ' 以下代码是替换邮箱地址 s = " 我的E-mail:Test@163.com。欢迎致电! " p = " w+@w+.w+ " r = " E_Mail@sohu.net " s = StrReplace(s,p,r) Debug.Prints ' 结果:我的E-mail:E_Mail@sohu.net。欢迎致电! EndSub 3. Match的SubMatches属性:
Private
Sub
Command3_Click()
Dim re As RegExp Dim mh As Match Dim mhs As MatchCollection Dim inpStr As String inpStr = " 我的E-mail:lucky@163.com。欢迎致电! " Set re = New RegExp re.Pattern = " (w+)@(w+).(w+) " ' 同样是匹配地址,注意和上例的不同 Set mhs = re.Execute(inpStr) Set mh = mhs( 0 ) ' 只有一个匹配 Debug.Print " 电子邮件地址是: " & mh.Value ' 这里是匹配的内容 Debug.Print " 用户名是: " & mh.SubMatches( 0 ) ' 第一个括号中的内容 Debug.Print " 邮箱是: " & mh.SubMatches( 1 ) ' 第二个括号中的内容 Debug.Print " 域名是: " & mh.SubMatches( 2 ) ' 第三个括号中的内容 EndSub (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |