VBA入门到进阶常用知识代码总结40

第40集 正则表达式4
175、 ()
可以让括号内作为一个整体,取匹配结果的时候,括号中的表达式可以用 \数字引用,\后数字按照从左往右,从外向里的顺序。
Sub t29()
Dim regx As New RegExp
Dim sr
sr = “A3A3QA3A37BDFEA387A8”
With regx
.Global = True
.Pattern = “(A3){2}” '相当于A3A3,结果:Q7BDFEA387A8
Debug.Print .Replace(sr, “”)
End With
End Sub

    Sub t30()
       Dim regx As New RegExp
       Dim sr
       sr = "A3A3QA3A37BDFEA387A8"
       With regx
        .Global = True
        .Pattern = "((A3){2})Q\1" 'A3A3QA3A3,\1代表((A3){2}),即A3A3,结果:7BDFEA387A8
        Debug.Print .Replace(sr, "")
       End With
    End Sub

      Sub t31()
       Dim regx As New RegExp
       Dim sr
       sr = "A3A3B4B4QB4B47BDFE87A8"
       With regx
        .Global = True
        .Pattern = "((A3){2})((B4){2})Q\4"  'A3A3B4B4QB4,\4代表(B4),如\3代表((B4){2}),结果:7BDFEA387A8
        Debug.Print .Replace(sr, "")
       End With
    End Sub

176、 (?=字符)
用(?=字符)可以先进行预测查找,到一个匹配项后,将在匹配文本之前开始搜索下一个匹配项。 不会保存匹配项以备将来之用。
'例:截取某个字符之前的数据
Sub t343()
Dim regex As New RegExp
Dim sr, mat, m
sr = “100元8000元57元”
With regex
.Global = True
.Pattern = “\d+(?=元)” '查找任意多数字后的元,查找到后从元以前开始查找,查找和\d匹配的。
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
结果:
100
8000
57
.Pattern = “\d+(?=元).”
结果:
100元
8000元
57元
.Pattern = “\d+(?=元)\d” 没有匹配到的结果,因为元是一个字符,而\d是一个数字,不同类的将匹配不到。

'例:验证密码,条件是4-8位,必须包含一个数字
Sub t355()
Dim regex As New RegExp
Dim sr, mat, m
sr = “A8ayaa”
With regex
.Global = True
.Pattern = “^(?=.\d).{4,8}$"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
177、 (?!字符)
用(?!字符)可以先进行负预测查找,到一个匹配项后,将在匹配文本之前开始搜索下一个匹配项。 不会保存匹配项以备将来之用。
Sub t356()
Dim regex As New RegExp
Dim sr, mat, m
sr = “建筑集团公司”
With regex
.Global = True
.Pattern = "^(?!中国).
” '结果:建筑集团公司
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
178、 ()与|
()与|一起使用可以表示or
Sub t344()
Dim regex As New RegExp
Dim sr, mat, m
sr = “100元800块7元”
With regex
.Global = True
.Pattern = “\d+(元|块)”
’ 相当于.Pattern = “\d+元|\d+块”
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
结果:
100元
800块
7元

发布了47 篇原创文章 · 获赞 0 · 访问量 205

猜你喜欢

转载自blog.csdn.net/tiansdk320/article/details/104365672
今日推荐