vba-正則表達式2(常用符號)


'正則表達式的核心是設置對比的規則,也就是設置Pattern屬性,而組成這些規則除了字符本身以外,是具有特定含義的符號。
 '下面介紹的是正規表達式中常用符號的第一部分。
 
'\號

  '1.放在不便書寫的字符前面,如換行符(\r),回車符(\n),制表符(\t),\自身(\\)
 
  '2.放在有特殊意義字符的前面,表示它自身,"\$","\^","\."
 
  '3.放在可以匹配多個字符的前面
      
       '\d 0~9的數字
       '\w 任意一個字母或數字或下划線,也就是 A~Z,a~z,0~9,_ 中任意一個
       '\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
'.(點)

   '可以匹配除換行符以外的所有字符

  也是一個點位符 \.

'+號
   '+表示一個字符可以有任意多個重復的。但至少有一個
    
   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
'{}號
  '可以設置重復次數
    '1 {n} 重復n次
        Sub t16()
           Dim regx As New RegExp
           Dim sr
           sr = "A234CA7A67"
           With regx
            .Global = True
            .Pattern = "\d{5}" '連續5個數字
            Debug.Print .Replace(sr, "")
           End With
           
         End Sub
   '2  {m,n}最小重復m次,最多重復n次
     
        Sub t22()
           Dim regx As New RegExp
           Dim sr
           sr = "A234CA7A6789"
           With regx
            .Global = True
            .Pattern = "\d{4,5}" '連續兩個數字或連續三個數字
            Debug.Print .Replace(sr, "")
           End With
         End Sub
    '3 {m,} 最少重復m次,相當於+
         Sub t23()
           Dim regx As New RegExp
           Dim sr
           sr = "A2348t6CA7A67"
           With regx
            .Global = True
            .Pattern = "\d{2,}" '連續兩個數字或連續三個數字
            Debug.Print .Replace(sr, "")
           End With
         End Sub
         
'* 可以出現0等任意次   相當於 {0,},比如:"\^*b"可以匹配 "b","^^^b"...

' ?
  '1 匹配表達式0次或者1次,相當於 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"

        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
    '2 利用+?的格式可以分段匹配
          
      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

 

     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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM