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

第38集 正则表达式2- Pattern常用符号1
163、
1.放在不便书写的字符前面,如:
换行符 \r
回车符 \n
制表符 \t
\自身 \
2.放在有特殊意义字符的前面,表示它自身:
$ $
^ ^
. .
3.放在可以匹配多个字符的前面
0~9的数字 \d
AZ,az,0~9,_ 中任意一个 \w
包括空格、制表符、换页符等空白字符的其中任意一个 \s

以上改为大写时,为相反的意思,如\D 表示非数字类型
Sub t1()
Dim regx As New RegExp
Dim sr
sr = “AE45B646C”
With regx
.Global = True
.Pattern = “\D” '排除非数字
Debug.Print .Replace(sr, “”)
End With
End Sub
运行结果:45646
164、 .
可以匹配除换行符以外的所有字符。
165、 +
+表示一个字符可以有任意多个重复的。
Sub t11()
Dim regx As New RegExp
Dim sr
sr = “A234CA7A”
With regx
.Global = True
.Pattern = “A\d+”
Debug.Print .Replace(sr, “”)
End With
End Sub
运行结果:CA
166、 {}
可以设置重复次数
{n} 重复n次
{m,n} 最小重复m次,最多重复n次
{m,} 最少重复m次
Sub t16()
Dim regx As New RegExp
Dim sr
sr = “A234CA7A67”
With regx
.Global = True
.Pattern = “\d{2}” '连续两个数字
Debug.Print .Replace(sr, “”)
End With
End Sub
运行结果:A4CA7A

    Sub t22()
       Dim regx As New RegExp
       Dim sr
       sr = "A234CA7A6789"
       With regx
        .Global = True
        .Pattern = "\d{2,3}" '连续两个数字或连续三个数字
        Debug.Print .Replace(sr, "")
       End With

运行结果:ACA7A9

     Sub t23()
       Dim regx As New RegExp
       Dim sr
       sr = "A2348t6CA7A67"
       With regx
        .Global = True
        .Pattern = "\d{3,}" '最少重重复3次的数字
        Debug.Print .Replace(sr, "")
       End With
     End Sub

运行结果:At6CA7A67
167、 *
可以出现0等任意次,相当于 {0,},比如:"^*b"可以匹配 “b”,"^^^b"…
168、 ?
1.匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 “a”,“ac”,“ad”
2. 利用+?的格式可以分段匹配
Sub t24()
Dim regx As New RegExp
Dim sr
sr = “A23.48CA7A6…7”
With regx
.Global = True
.Pattern = “\d+.?\d+” '最多连续1个
Debug.Print .Replace(sr, “”)
End With
End Sub
运行结果:ACA7A6…7

  Sub t87()
    Dim regex As New RegExp
    Dim sr, mat, m
    sr = "<td><p>aa</p></td> <td><p>bb</p></td>"
    With regex
      .Global = True
      .Pattern = "<td>.*?</td>"
     Set mat = .Execute(sr)
      For Each m In mat
        Debug.Print m
      Next m
    End With
  End Sub

运行结果:

aa

bb

 Sub t88()
   Dim regex As New RegExp
    Dim sr, mat, m
    sr = " aba  aca  ada "
    With regex
      .Global = True
      .Pattern = "\s.+?\s"
     Set mat = .Execute(sr)
      For Each m In mat
        Debug.Print m
      Next m
    End With
 End Sub

运行结果:
aba
aca
ada

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

猜你喜欢

转载自blog.csdn.net/tiansdk320/article/details/104365642