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

最近在用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方法:

1. RegExp的Test方法:

Function bTest(ByVal s As String , ByVal p As String ) As 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 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)
    
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.0如何使用正则表达式相关推荐

  1. VB6.0简繁体转换步骤

    1.软件准备 Ø VB6.0简体版 Ø VB6.0繁体版 Ø convertZ Ø 自写转换工具RegularExpressTest.exe 或其它支持正则表达式转换的工具 2.convertZ篇 2 ...

  2. vb6.0 mysql ado控件_VB6.0里的ADO控件怎么用?

    1,首先开启VB6.0时新建数据工程 2,双击窗体在弹出的窗体中追加控件:Command1,Text1,Adodc1,DataGrid1其中DataGrid1是用来显示查询结果,Adodc1用来导航查 ...

  3. 让你的VB6.0支持滚轮操作

    因为工作的原因,最近装上了VB6.0,突然发现VB6.0不支持滚轮操作,郁闷至极,忍受了一个上午,渡过了一上午没有滚轮的日子...... 中午去微软官方网站查了查相关信息,终于搞定了 1.下载 htt ...

  4. VB6.0 怎样启用控件comdlg32.ocx

    VB6.0 怎样启用控件comdlg32.ocx 怎样启用控件comdlg32.ocx 2008-10-08 09:32 提问者: nefu_20061617 |浏览次数:1502次 vbs文件中有代 ...

  5. VB6.0连接MySQL数据库

    VB6.0连接MySQL数据库 转载于:https://www.cnblogs.com/OneFri/p/5006026.html

  6. avframe转byte数组_C# amp; VB6.0 图像与二维数组 互转

    背景 最近在研究C#进行图像处理,在图像处理中算法中,往往都是针对的是矩阵运算的.矩阵其实就是一个二维的数组. 为了图像处理的速度,我们都需要放在内存中处理.但网络上收集的代码,往往都是以一维数组的样 ...

  7. VB6.0和VB.Net对照表

    想在网上找一下VB.Net中,哪些是VB6.0遗留下来的东西,哪些是VB.Net增加的东西.结果中文的没有找到,找到了一个日文网页.简单的翻译了一下,放在这里,供需要的人参考. VB6.0和VB.Ne ...

  8. sql server 2008 r2卸载重装_免费下载:Intouch软件、Windows操作系统、SQL数据库,VB6.0、C#...

    为大家整理了常用的Windows操作系统和安装软件,基本上都是经过我们项目测试OK的版本,以后项目调试就齐全了,不用再"东奔西走","小鹿乱撞"了.整理不易,若 ...

  9. vb6.0服务器组件安装失败,win10安装vb6.0总是失败怎么办?win10 vb6.0安装不了的解决办法...

    VB6.0已经10几年了,现在最新的win10系统无法安装,安装会卡死,怎么办?下面给大家介绍一下怎么在win10下完整安装vb6.0.供大家参考! 1.本文以vb6.0企业版为例,其他版本同此理!进 ...

最新文章

  1. SylixOS iMX6平台I2C总线驱动
  2. android 数据存储----android短信发送器之文件的读写(手机+SD卡)
  3. 那些 Linux 下好用的 小工具 收集
  4. 库存生产-实用sql知识:如何在保证去重分组的情况下获取组内最新数据(可按时间排序),distinct +group by +嵌套结果 的联合妙用
  5. 基于Arduino开发的智能蓝牙小车
  6. 大数据团队工作与建设
  7. Ivy Book List
  8. cl.clus pw index.php,Application Essay 写作 第五课 Introductions and Conclus
  9. tmux简洁教程及config关键配置
  10. P4165 [SCOI2007]组队 推柿子+差分
  11. HTML基础介绍和基础骨架
  12. 【U8+】win10/11系统注册用友U8硬加密
  13. 激光 pm2.5传感器 攀藤科技 stm32 调试通过
  14. html怎么弄到excel里,html里导入excel表格数据-如何将网页中的表格快速复制到EXCEL中...
  15. 【Linux、进程隐藏】在Linux环境下添加系统调用实现进程隐藏
  16. 3D离线地图的两种实现方式
  17. 一个老的游戏,据说全世界只有不到4000人可以走出房间.密室逃脱--之“天蓝色房间”...
  18. 京东首曝无人仓 四款机器人引爆智慧物流黑科技
  19. linux鼠标滚轮不能上下滚动页面,Windows10鼠标滚轮无法滚动页面如何解决
  20. w10用计算机卸载,Win10专业版电脑里的软件如何卸载干净?

热门文章

  1. dom4j 中文api
  2. hadoop JOB的性能优化实践
  3. 解开Android应用程序组件Activity的singleTask之谜(3)
  4. linux iostat来对linux硬盘IO性能进行了解
  5. Linux 命令(107)—— systemctl 命令
  6. 腾讯实习mini项目总结
  7. 【学习笔记】莫队算法
  8. 解决 html5 input type='number' 类型可以输入e
  9. 【Java】@ResponseBody 返回JsonObject
  10. BZOJ 1042: [HAOI2008]硬币购物 [容斥原理]