频道栏目
首页 > 资讯 > Vb > 正文

介绍下vb中使用正则的几个方法

18-05-17        来源:[db:作者]  
收藏   我要投稿

许多程序设计语言都支持利用正则表达式进行字符串操作,基本都是直接内置,直接使用,而我们的vb6太老了,没有内建封装,只能通过第三方组件来使用,总结了下不外乎下面3种方法。

方法一:使用CreateObject("VBSCRIPT.REGEXP"),这是最常用的,与vb最融洽。范例:

Private Sub Command1_Click()
    Dim reg As Object, s As String
    Dim match As Object, matchs As Object
    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.Pattern = "href='(.*?)'" '获取html中a标签中的网址
    Set matchs = reg.Execute("baidu")
    For Each match In matchs
        Debug.Print match.submatches(0)
    Next
End Sub

方法二:CreateObject("ScriptControl"),这个实际是调用JavaScript中的正则功能,不如上面的好用,获取值的话比较麻烦,不过要是只用replace还行,比较方便,比如下面的范例“删除非数字部分,只保留数字”:

Private Sub Command1_Click()
    Dim sc As Object, s As String
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JavaScript"
    s = sc.Eval("'BCJT100116660013555022CCR5'.replace(/[^1-4]/g,'');")
    MsgBox s
End Sub

方法三:通过webbrowser,这个不常用使用也不方便,本质还是通过调用JavaScript的正则功能。需要引入一个webbrowser控件,然后用它的WebBrowser1.Document.parentWindow.ExecScript方法。

在软件中本身就有webbrowser而不是为了用正则专门加入这个控件的情况下可以顺带使用下,如果要操作的是webbrowser的元素可以直接都ExecScript方法中完成,不用与vb交互。如果需要与vb交互得创建个js中间变量。例如下的范例“删除非数字部分,只保留数字”:

Private Sub Command1_Click()
    WebBrowser1.Navigate "about:blank" '载入文本对象,不然下面无法使用Document对象
    WebBrowser1.Document.parentWindow.ExecScript "var s='BCJT100116660013555022CCR5'.replace(/[^1-4]/g,'');"
    MsgBox WebBrowser1.Document.Script.s
End Sub

天啊,竟然这么短。可是如果就简单处理下字符要引入个对象就有点滥用了,还得看实际情况看使用场景。

相关TAG标签
上一篇:CAAnimation动画详解
下一篇:CodeForces908G New Year and Original Order解题思路
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站