VB6使用正则浅谈

日期:2021年04月27日
作者:Commas
注释:VB6本身不支持正则,需要引入VBS中的正则来工作……



一、正则的前期绑定与后期绑定

1)正则的前期绑定(静态绑定)

引入流程:工程→引用→Microsoft VBScript Regular Expressions 5.5
在这里插入图片描述

'NO1:先声明,后实例化
Dim re As RegExp
Set pDicX = New RegExp
'NO2:直接声明实例化,相当于执行了NO1的两句代码
Dim re As New RegExp

2)正则的前期绑定(动态绑定)

Dim re As Object
Set re = CreateObject("vbscript.regexp")

二、属性与方法

1)RegExp

RegExp:正则表达式匹配模式的主要对象
查看流程:视图→对象浏览器→VBScript_RegExp_55→RegExp
在这里插入图片描述

属性与方法类型说明
GlobalBooleanTrue表示匹配所有, False表示仅匹配第一个符合项
IgnoreCaseBooleanTrue表示不区分大小写, False表示区分大小写
MultilineBooleanTrue表示允许多匹配多行文本, False表示搜索在换行时停止
PatternString正则表达式
ExecuteObject执行正则查找,返回所有匹配结果的集合,若未找到,则为空
ReplaceString执行正则字符串替换,并返回替换后的字符串
TestBoolean执行正则查找,若找到返回True,否则返回False

2)MatchCollection

MatchCollection:集合对象,包含有关匹配字符串的信息,该对象包含每个成功匹配的Match对象
查看流程:视图→对象浏览器→VBScript_RegExp_55→MatchCollection
在这里插入图片描述

属性与方法类型说明
CountLong匹配对象的总数
ItemObject匹配对象的索引

3)Match

Match:成功匹配的对象
查看流程:视图→对象浏览器→VBScript_RegExp_55→Match
在这里插入图片描述

属性与方法类型说明
FirstIndexLong匹配对象所匹配字符串的起始位置
LengthLong匹配对象所匹配字符串的字符长度
SubMatchesObject匹配对象所匹配结果的子项
ValueString匹配对象所匹配的值

4)SubMatches

SubMatches:成功匹配的对象的子项
查看流程:视图→对象浏览器→VBScript_RegExp_55→SubMatches
在这里插入图片描述

属性与方法类型说明
CountLong匹配对象所匹配结果子项的总数
ItemString匹配对象所匹配结果子项的结果

三、正则使用的示例

1)代码:

Option Explicit

Private Sub Form_Load()
On Error Resume Next
    Dim sTxt As String: sTxt = "123 regexp 985abc@qq.com 正则表达式"
	
	'NO1
    Dim re As New RegExp
	'NO2
    'Dim re As Object
    'Set re = CreateObject("vbscript.regexp")

    With re
        .Global = False
        .IgnoreCase = False
        .MultiLine = True
        .Pattern = "(\w+)@(qq)\.com"

        '1)判断字符串中是否存在正则匹配的字符串
        Debug.Print sTxt, .Test(sTxt)

        '2)替换字符串中存在正则匹配的字符串
        Debug.Print .Replace(sTxt, "邮箱")

        '3)查找字符串中存在正则匹配的字符串,并返回匹配集合Match
        Dim clnM As MatchCollection, oM As Match, i As Long, j As Long
        Set clnM = .Execute(sTxt)
        With clnM
            Debug.Print "clnM.Count=" & .Count
            For i = 0 To .Count - 1
                Set oM = .Item(i)
                Debug.Print i, oM, "→明细:", oM.FirstIndex, oM.Length, oM.Value
                
                If oM.SubMatches.Count > 0 Then
                    Debug.Print "oM.SubMatches.Count=" & oM.SubMatches.Count
                    For j = 0 To oM.SubMatches.Count - 1
                        Debug.Print "oM.SubMatches(" & j & ")=" & oM.SubMatches(j)
                    Next j
                End If
            Next i
        End With
    End With
End Sub

2)结果:

123 regexp 985abc@qq.com 正则表达式       True
123 regexp 邮箱 正则表达式
clnM.Count=1
 0            985abc@qq.com →明细:       11            13           985abc@qq.com
oM.SubMatches.Count=2
oM.SubMatches(0)=985abc
oM.SubMatches(1)=qq

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/116745321

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Commas.KM

码路共同进步,感恩一路有您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值