这一节想作的学习汇报主要想讲下关于字符串的处理,这个往往是我们在程序处理中的关键问题,因为所有的信息最终往往是以字符串的形式进行传达,所以,我们一定要掌握好字符串的处理. 而字符串的处理中,比较常见的就是使用正则表达式来处理了,这一节就从普通的搜索讲起,再讲到VB中的正则表达式,这里也是只做一个大概的示范,而正则表达式的使用也不是本节能够讲得清的,如果已经掌握的可以忽略, 如果有不了解的同学,可以去专门讲解正则表达式的地方进行学习
- 首先我们先上图, 在工具页面新建一个框架和两个输入框以及两个按钮,然后把按钮的标题改成文本搜索和正则搜索,而他们的名称后面,我们加上下划线
_
以及我们能看得懂的拼音字符wenBenSouSuo
,保留前面的名称是因为是自动生成的,是程序中本来的名称而且带了编号很方便我们了解这个是第几个按钮了,而后面的拼音是为了让我们作者自己能直观的从这个名称上了解这个按钮的意义,所以还特意把每个文字的首字母进行大写处理,另一个也是同理.
- 然后分别双击这两个两个按钮进入按钮的点击事件
然后上代码:
Private Sub CommandButton4_wenBenSouSuo_Click()
If ActiveDocument.FilePath <> "" Then
FileName = ActiveDocument.Name
If InStr(FileName, UserForm1.TextBox3.Value) > 0 Then
MsgBox "文件名中含有" & Chr(34) & UserForm1.TextBox3.Value & Chr(34)
Else
MsgBox "文件名中不包含该内容"
End If
Else
MsgBox "当前文件名不存在"
End If
End Sub
Private Sub CommandButton5_zhenZeSouSuo_Click()
If ActiveDocument.FilePath <> "" Then
Dim objRegEx As Object, FileName As String
FileName = ActiveDocument.Name
Set objRegEx = CreateObject("vbscript.regexp")
objRegEx.Pattern = ".*?(" & UserForm1.TextBox4.Value & ").*"
objRegEx.Global = True
Set objMH = objRegEx.Execute(FileName)
If objMH.Count > 0 Then
subm0 = objMH(0).submatches(0)
Set objRegEx = Nothing
MsgBox "当前匹配正则中的内容为" & subm0
Else
MsgBox "匹配失败"
End If
Else
MsgBox "当前文件名不存在"
End If
End Sub
演示:
代码浅释:
首先获取当前的文件名ActiveDocument.Name
储存在FileName当中,然后判断一下文件名当中有没有输入框TextBox3
的值Value
,如果匹配到了的话,InStr
会返回一个匹配的第一次的位置也就是下标,所以如果匹配上了一定是个正数,所以用了>0
,未匹配上就是0
后面关于正则表达式
首先设置一下objRegEx
为一个对象Object
,然后让他Set objRegEx = CreateObject("vbscript.regexp")
,让它赋值为一个新建的对象VB脚本(script就是脚本的意思)中的regexp(regexp就是正则的意思)
Pattern
是就是正则表达式的匹配式子储存的地方
Global
是全局匹配的意思,如果是true的话 当匹配上了第一个之后程序仍然会再搜索第二次
Execute
是在某字符串里面执行正则搜索的函数功能, 后面的括号里面填上需要被搜索的字符串,因为带了括号,所以是有返回值的,所以用objMH
来储存这个对象,这个对象里面有两个属性,其中一个是Count
记录了匹配总数,所以我们就可以用来检测匹配成功与否,所以>0
就是成功匹配
objMH(0)
就是其中第一次正则匹配成功所储存的字符串
.submatches(0)
就是正则表达式内的第一个括号内匹配的内容
Set objRegEx = Nothing
再把这个objRegEx 从内存中回收不占用内存空间