VBA 기초 지식 정리 (정규 표현 식)

14146 단어 VBA
정규 표현 식
   '                ,               ,        、     。
   
   '        :
     '1、          
     '2、       ,           ,             。

'2 사용법
인용 법
   '  VBE     :   -   ,  : Microsoft VBScript Regular Expressions 5.5,              
     'Dim regex As New RegExp
     Sub t1()
       Dim reg As New RegExp
     End Sub

직접 건설 법
'     Dim regex As Object
'     Set regex = CreateObject("VBScript.RegExp") '      

     Sub t2()
       Dim reg As Object
       Set reg = CreateObject("VBScript.RegExp")
     End Sub

3 상용 속성
'1 글로벌 속성:
       '    true,       
       '    False,     1    
       '1  :
       Sub t3()
             Dim reg As New RegExp
             Dim sr
             sr = "ABCEA"
             With reg
               .Global = True
               .Pattern = "A"
               Debug.Print .Replace(sr, "")
             End With
       End Sub

'2 Ignorecase 속성' 검색 이 대소 문 자 를 구분 하 는 경우 False (결 성 값) True 를 구분 하지 않 습 니 다.
정규 표현 식 을 정의 하 는 '3 Pattern 속성' 문자열결 성 된 값 은 빈 텍스트 입 니 다.4 Multiline 속성, 문자열 이 여러 줄 을 사 용 했 는 지, 여러 줄 이 라면 $각 줄 의 마지막 줄 에 적 용 됩 니 다.
       Sub t4()
         Dim reg As New RegExp
         Dim sr
         sr = "AEA" & Chr(10) & "ABCA"
         With reg
           .Global = True
           .MultiLine = True
           '.Pattern = "A$"
           .Pattern = "^A"
           Debug.Print .Replace(sr, "")
         End With
       End Sub

'5 Execute 방법
         '     MatchCollection   ,             Match   ,
         '       :
           'FirstIndex:    
           'Length;   
           'Value:  
       Sub t5()
             Dim reg As New RegExp
             Dim sr, matc
             sr = "A454BCEA5"
             
             With reg
               .Global = True
               .Pattern = "A\d+"
               Set matc = .Execute(sr)
             End With
             
             Stop
       End Sub
     
       Function ns(rg)
             Dim reg As New RegExp
             Dim sr, ma, s, m, x
             
             With reg
               .Global = True
               .Pattern = "\d*\.?\d*"
               Set ma = .Execute(rg)
             
               For Each m In ma
                  s = s + Val(m)
               Next m
               
             End With
             
            ns = s
           ' Stop
       End Function

'6. 텍스트 방법
        '       ,                   。                 
        Sub t7()
             Dim reg As New RegExp
             Dim sr
             sr = "BCR6EA"
             
             With reg
               .Global = True
               .Pattern = "\d+"
               If .test(sr) Then MsgBox "        "
             End With
             
        End Sub
        ----------------------------------------------------


Function     (rg As String, k As Integer)

      Dim regx As New RegExp
      With regx
	       .Global = True
	       If k = 1 Then
	       		.Pattern = "\D"
	       ElseIf k = 2 Then
	       		.Pattern = "\w"
	       End If
	       
	            = .Replace(rg, "")
      End With

End Function

상용 부호
'정규 표현 식 의 핵심 은 대비 규칙, 즉 Pattern 속성 을 설정 하 는 것 입 니 다. 이 규칙 들 을 구성 하 는 것 은 문자 자 체 를 제외 하고 특정한 의 미 를 가 진 기호 입 니 다.'다음은 정규 표현 식 에서 자주 사용 되 는 기호의 첫 부분 을 소개 한다.
번호
'1. 줄 바 꿈 문자 (\ r), 리 턴 문자 (), 탭 문자 (\ 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}" '      
            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 = "

aa

bb

" With regex .Global = True .Pattern = ".*?" 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

'기호: 제 한 된 문 자 는 맨 앞 에 있 습 니 다. 예 를 들 어 \ d 는 숫자 로 시작 합 니 다.
Sub T34()
    Dim regex As New RegExp
    Dim sr, mat, m
    sr = "d234 345d43"
    With regex
      .Global = True
      .Pattern = "^\d*"
       Set mat = .Execute(sr)
        
        For Each m In mat
          Debug.Print m
        Next m
        
    End With
  End Sub

'$기호: 제 한 된 문 자 는 맨 뒤에 있 습 니 다. 예 를 들 어 A $는 마지막 문자 가 A 임 을 표시 합 니 다.
Sub T3433()
    Dim regex As New RegExp
    Dim sr, mat, m
    sr = "R243r"
    
    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

'\ b' 빈 칸 (시작 과 끝 포함)
    Sub t26()
       Dim regx As New RegExp
       Dim sr
       sr = "A12dA56 A4"
       
       With regx
        .Global = True
        .Pattern = "\bA\d+"
        Debug.Print .Replace(sr, "")
       End With
       
    End Sub
  --------------------------------------------------
Sub T272()
    Dim regex As New RegExp
    Dim sr, mat, m
    sr = "ad bf cr de ee"
    With regex
      .Global = True
       .Pattern = ".+?\b"
        Set mat = .Execute(sr)
        For Each m In mat
          If m <> " " Then Debug.Print m
        Next m
    End With
  End Sub

'|' 은 왼쪽 이나 오른쪽 에 맞 는 두 가지 조건 을 설정 할 수 있 습 니 다.
  Sub t27()
       Dim regx As New RegExp
       Dim sr
       sr = "A12DA56 A4B34D"
       
       With regx
        .Global = True
        .Pattern = "A\d+|B\d+"
        Debug.Print .Replace(sr, "")
       End With
       
    End Sub

'\ un 은 n 과 일치 합 니 다. 그 중에서 n 은 4 비트 16 진수 로 표 시 된 유 니 코드 문자 입 니 다.'한자 1 의 인 코딩 은 4e 00 이 고 마지막 코드 는 9fa 5 이다.
 Sub t2722()
       Dim regx As New RegExp
       Dim sr
       sr = "A12d A 56  A4"
       
       With regx
        .Global = True
        .Pattern = "[\u4e00-\u9fa5]"
        Debug.Print .Replace(sr, "")
       End With
       
    End Sub

'()' 는 괄호 안 을 하나의 전체 로 중복 시 킬 수 있다.
    Sub t29()
       Dim regx As New RegExp
       Dim sr
       sr = "A3A3QA3A37BDFE87A8"
       With regx
        .Global = True
        .Pattern = "((A3){2})" '   A3A3
        Debug.Print .Replace(sr, "")
       End With
       
    End Sub

'일치 하 는 결 과 를 가 져 올 때 괄호 안의 표현 식 은 \ \ 숫자 로 참조 할 수 있 습 니 다.
    Sub t30()
       Dim regx As New RegExp
       Dim sr
       sr = "A3A3QA3A37BDFE87A8"
       With regx
        .Global = True
        .Pattern = "((A3){2})Q\1"
        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"
        Debug.Print .Replace(sr, "")
       End With
       
    End Sub

'(? = 문자) 로 예측 하여 찾 을 수 있 습 니 다. 일치 하 는 항목 에 도착 하면 일치 하 는 텍스트 전에 다음 일치 하 는 항목 을 검색 합 니 다.미래 에 대비 하여 일치 하 는 항목 을 저장 하지 않 습 니 다.
 ' :           
      Sub t343()
        Dim regex As New RegExp
        Dim sr, mat, m
        sr = "100 8000 57 "
        
        With regex
           .Global = True
           .Pattern = "\d+(?= )" '          ,            (           ,
                                  '          )   ()   ,        ,          ,     
            Set mat = .Execute(sr)
            
            For Each m In mat
              Debug.Print m
            Next m
            
        End With
      End Sub
      -----------------------------------------
   ' :    ,   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

'(?! 문자) 로 마이너스 예측 검색 을 할 수 있 습 니 다. 일치 하 는 항목 에 도착 하면 일치 하 는 텍스트 전에 다음 일치 하 는 항목 을 검색 합 니 다.미래 에 대비 하여 일치 하 는 항목 을 저장 하지 않 습 니 다.
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

'() 와 | 함께 사용 하면 or 를 표시 할 수 있 습 니 다.
  Sub t344()
    Dim regex As New RegExp
    Dim sr, mat, m
    sr = "100 800 7 "
    With regex
      .Global = True
       .Pattern = "\d+( | )"
       '.Pattern = "\d+(?= | )"
        Set mat = .Execute(sr)
        For Each m In mat
          Debug.Print m
        Next m
    End With
  End Sub

'[]' 사용 자 는 괄호 [] 에 일련의 문 자 를 포함 하고 그 중의 임의의 문자 와 일치 할 수 있 습 니 다.[^] 로 일련의 문 자 를 포함 하지 않 으 면 그 중의 문자 이외 의 임의의 문자 와 일치 할 수 있 습 니 다.같은 이치 로, 비록 그 중 어느 하나 와 일치 할 수 있 지만, 단지 하나 일 뿐, 여러 개 는 아니다
'1 괄호 안에 있 는 것 중 하나 와 일치 합 니 다.
 Sub t29()
       Dim regx As New RegExp
       Dim sr
       sr = "ABDC"
       
       With regx
            .Global = True
            .Pattern = "[BC]"
            Debug.Print .Replace(sr, "")
       End With
       
End Sub

'2 괄호 안의 문자 가 아 닙 니 다.
    Sub T35()
       Dim regx As New RegExp
       Dim sr
       sr = "ABCDBDC"
       
       With regx
            .Global = True
            .Pattern = "[^BC]"
            Debug.Print .Replace(sr, "")
       End With
       
    End Sub

3. 한 구간 에서
Sub t38()
       Dim regx As New RegExp
       Dim sr
       sr = "ABCDGWDFUFE"
       With regx
        .Global = True
        .Pattern = "[a-h]"
        Debug.Print .Replace(sr, "")
       End With
       
End Sub
----------------------------------------------
 Sub t40()
       Dim regx As New RegExp
       Dim sr
       sr = "124325436789"
       
       With regx
            .Global = True
            .Pattern = "[1-47-9]"
            Debug.Print .Replace(sr, "")
       End With
       
End Sub

좋은 웹페이지 즐겨찾기