实例需求:待处理代码段如下所示,现在需要提取其中的变量名称。
Public pFactor As Integer
Sub TestCode()
Dim reg As New RegExp, a As Workbook
Dim ms As VBScript_RegExp_55.MatchCollection
Dim m As VBScript_RegExp_55.Match
Dim i, j
Dim x1, y1, z1 As String
Dim x2 As String, y2, z2
Dim x3, y3 As String, z3
Dim x4 As String, y4 As String, z4
Dim i2$, j2&, k2#
Const PRE_RATE = 2.5
End Sub
示例代码如下。
Sub Demo()
    Dim sText, objRegexp, objMH, objMHs, objMHVars, objMHVar
    sText = Trim([a1])
    Set objRegexp = CreateObject("vbscript.regexp")
    objRegexp.IgnoreCase = True
    objRegexp.Global = True
    objRegexp.Pattern = "\b(?:Public|Private|Static|Const|Dim)\b(.+)"
    Set objMHs = objRegexp.Execute(sText)
    objRegexp.Pattern = "(\w+)[^,]*"
    For Each objMH In objMHs
        Set objMHVars = objRegexp.Execute(objMH.submatches(0))
        For Each objMHVar In objMHVars
            Debug.Print objMHVar.submatches(0)
        Next
    Next
    Set objMH = Nothing
    Set objMHs = Nothing
    Set objMHVars = Nothing
    Set objMHVar = Nothing
    Set objRegexp = Nothing
End Sub
【代码解析】
 第3行代码读取待处理文本。
 第4行代码创建正则对象。
 第5行代码设置正则匹配忽略字符大小写。
 第6行代码设置正则全局匹配。
 第5行代码设置正则匹配模式。
| 正则表达式 | 说明 | 
|---|---|
| `\b(?:Public | Private | 
| (.+) | 匹配至少一个任意字符,第一个匹配组 | 
匹配结果如下图所示。
 
第8第行代码执行正则匹配。
 第9行代码设置第2此正则匹配模式。
| 正则表达式 | 说明 | 
|---|---|
| (\w+) | 匹配至少一个(数字、字母、下划线)字符,第一个匹配组 | 
| [^,]* | 匹配非逗号字符,可以不存在 | 
匹配结果如下图所示。
 
第10~15行代码循环遍历匹配结果。
 第11第行代码再次执行正则匹配。
 第12~14行代码循环遍历第2次匹配结果,第13行代码输入匹配结果。












![[ Term ] 你真的了解 UTC 时间吗?它和 GMT 时间的区别是什么?](https://img-blog.csdnimg.cn/f3b12bf4f7d74610892a916da8f51443.png)






