vb中使用正则的几个方法

许多程序设计语言都支持利用正则表达式进行字符串操作,基本都是直接内置,直接使用,而我们的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("<a href='baidu.com'>baidu</a>")
    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控件是不可取的。有时我们需要操作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
天啊,竟然这么短。可是如果就简单处理下字符要引入个对象就有点滥用了,还得看实际情况看使用场景。


猜你喜欢

转载自blog.csdn.net/sysdzw/article/details/80345627