VB6.0如何使用正则表达式

原创 2007年10月16日 11:15:00

  最近在用VB6解决一个网页解析的应用,涉及到了正则。如何在VB6中使用正则表达式,这个在MS网站上有介绍,不过介绍的不是很全面。下面结合MS网站的内容和搜索到的东西,自己汇总一下。

  引用了Microsoft VBScript Regular Expressions 5.5 后就可以声明正则相关对象了。主要有三个对象:RegExp、MatchCollection、Match。
  
  1. RegExp 这是VB使用正则表达式匹配模式的主要对象了。其提供的属性用于设置那些用来比较的传递给 RegExp 实例的字符串的模式。 其提供的方法以确定字符串是否与正则表达式的特定模式相匹配。

  属性:
  Pattern:一个字符串,用来定义正则表达式。
  IgnoreCase:一个布尔值属性,指示是否必须对一个字符串中的所有可能的匹配进行正则表达式测试。这是MS的解释,有点费解,实际使用中的实例是,如果True,则忽略英文字母大小的匹配,False对大小写进行匹配。
  Global:设置一个布尔值或返回一个布尔值,该布尔值指示一个模式是必须匹配整个搜索字符串中的所有搜索项还是只匹配第一个搜索项。
  MultiLine:这个MS没有介绍。查了一下资料,设置一个布尔值或返回一个布尔值,是否在串的多行中搜索。如果允许匹配多行文本,则multiline为true,如果搜索必须在换行时停止,则为false 。

  方法:
  Execute:返回一个 MatchCollection 对象,该对象包含每个成功匹配的 Match 对象。
  Replace:MS没有介绍,这是返回一个将匹配字符替换为指定字符的字符串。
  Test:返回一个布尔值,该值指示正则表达式是否与字符串成功匹配。

  2. MatchCollection 是集合对象,包含有关匹配字符串的信息,该对象包含每个成功匹配的 Match 对象。

  属性
  Count:匹配对象的总数。
  Item:匹配对象的索引。

  3. Match 是成功匹配的对象。

  属性:
  FirstIndex:匹配对象所匹配字符串的起始位置。
  Length:匹配对象所匹配字符串的字符长度。
  SubMatches:匹配对象所匹配结果的子项。
  Value:匹配对象所匹配的值。

  相关示例参照MS的网站:http://support.microsoft.com/kb/818802/zh-cn。MS上没有介绍的几个属性和方法的使用,见下面的几个简单示例:

  1. RegExp的Test方法:

Function bTest(ByVal s As String, ByVal p As StringAs Boolean
    
Dim re As RegExp
    
Set re = New RegExp
    re.IgnoreCase 
= False '设置是否匹配大小写
    re.Pattern = p
    bTest 
= re.Test(s)
End Function

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)
    
End Sub

  2. RegExp的Replace方法:

Function StrReplace(s As String, p As String, r As StringAs String
    
    
Dim re As RegExp
    
Set re = New RegExp
    re.IgnoreCase 
= True
    re.Global 
= True
    re.Pattern 
= p
    StrReplace 
= re.Replace(s, r)
    
End Function

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.Print s
    
'结果:我的E-mail: E_Mail@sohu.net 。欢迎致电!

End Sub

  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)  '第三个括号中的内容
    
End Sub 

  

VB6 正则表达式提取内容

今天帮同事做一个数据对接,从返回的数据中提取想要的部分。返回的是一个WebService结果,由外圈的XML标记和中间的有效内容组成,现在要把有效内容取出来,VB6.0实现。 下面是返回的内容: ...
  • zhouyingge1104
  • zhouyingge1104
  • 2015年12月07日 14:00
  • 4467

【收藏】65条最常用正则表达式,你要的都在这里了!

转载自:http://mp.weixin.qq.com/s?__biz=MzA4ODIwMDUyNw==&mid=402601677&idx=1&sn=53799ff51e0a1785a61b7c83...
  • u014520745
  • u014520745
  • 2016年01月21日 20:05
  • 576

VB6 正则表达式提取内容

今天帮同事做一个数据对接,从返回的数据中提取想要的部分。返回的是一个WebService结果,由外圈的XML标记和中间的有效内容组成,现在要把有效内容取出来,VB6.0实现。 下面是返回的内容: ...
  • zhouyingge1104
  • zhouyingge1104
  • 2015年12月07日 14:00
  • 4467

C++中的也能使用正则表达式

C++中的也能使用正则表达式 http://www.cnblogs.com/ittinybird/p/4853532.html       正则表达式Regex(regular e...
  • zdy0_2004
  • zdy0_2004
  • 2015年10月05日 14:41
  • 1529

如何在grep和sed命令中使用扩展的正则表达式

对于grep,可以使用egrep命令来替代,那么就支持扩展的正则表达式了。 对于sed,只要加上参数-r就可以支持扩展的正则表达式了。 由于平时写python用的正则表达式大部分都是扩展的正则表达...
  • mx_windforce
  • mx_windforce
  • 2016年01月13日 15:24
  • 1652

VB6.0如何使用正则表达式

转自:http://hereson.javaeye.com/blog/189513首先要添加引用(工程--引用)Microsoft VBScript Regular Expressions 5.5,然...
  • jiutao_tang
  • jiutao_tang
  • 2011年03月04日 13:15
  • 730

VB6.0如何使用正则表达式

  • 2015年10月17日 14:55
  • 5KB
  • 下载

VB6.0 正则表达式

引用了Microsoft VBScript Regular Expressions 5.5 后就可以声明正则相关对象了。主要有三个对象:RegExp、MatchCollection、Match。   ...
  • gufengaoyue
  • gufengaoyue
  • 2013年11月20日 15:58
  • 815

VB6.0中提示:该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能”的解决办法

用VB6.0中的某些控件时总是提示“该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能”~!(主要是因为VB6.0精简版) 具体解决方法: 这里需要一个工具:vbcli.ex...
  • kencaber
  • kencaber
  • 2016年02月07日 11:36
  • 6035

浅谈VB6.0使用子类化

基础知识:Windows的消息驱动机制     子类化,对于各位高手来说easy到不得了了,不用我说,基本可以绕路了。但是对于一些新手来说确实很陌生的,基本上在网上也没有什么系统的资料。那么,我就趁...
  • JiLuoXingRen
  • JiLuoXingRen
  • 2012年04月22日 17:43
  • 4704
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB6.0如何使用正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)