본문 바로가기
VBA

[VBA] 패턴을 순환하는 정규식을 만들어보자

by 일등미노왕국 2022. 8. 31.

이번 정규식에 관한 내용은 실제로 쇼핑몰 파싱을 하던 중에 발생한 일이었다.

 

쇼핑몰 태그를 정규식을 파싱하던 중 하나 이상의 패턴들로 파싱을 하다 보니까 코드가 너무 지저분해서

문자열과 패턴을 함수로 만들어서 불러오면서 사용했더니 코드가 한결 간단해지고 유지보수가 편할거라 생각되어 만들어 보았다. 

 

오토핫키도 그렇고 조금씩 접해보는 언어들에서 사용자 함수의 생성과 활용은 크게 적용되어 앞으로는 코드들을 함수화 시켜서 모듈처럼 사용하려고 한다.

 

그전에는 가독성도 떨어지고 속도면에서도 문제가 있어 함수 사용을 하지 않았는데, 지금보면 단편적인 사고였던거 같다..

코딩을 하려면 입체적인 사고가 절대적으로 필요한거 같다..

 

이번 코드는 함수로 만들어져서 엑셀에서 함수처럼 불러와서 사용하여야 한다.

물론 나중에 이를 VBA에서 펑션으로 불러와서 사용하면 되니까 기회가 되신다면 사용해 보시길 추천한다.

 

더보기
Option Explicit

Function Haja_REGExp(Raw$, sPattern$)                              '= rawdata와 패턴을 받으면

    Dim Reg As Object: Set Reg = CreateObject("vbscript.regexp")   '= 정규식 선언
    Dim Mat As Object                                              '= 정규식 일치값
    Dim result$
    
    With Reg                                                       '= 정규식 설정
        .Pattern = sPattern
        .Global = True
    End With
    
    If Reg.test(Raw) = True Then                                    '= 정규식 패턴값이 있으면
    
        Set Mat = Reg.Execute(Raw)                                  '= Mat에 담아라
        
        For Each Mat In Mat                                         '= Mat를 순환해라
        
            If result = "" Then                                     '= 결과값이 없으면
                result = Mat                                        '= 결과값에 mat의 개체값을 넣고
            Else                                                    '= 결과값이 존재하면
            
                result = result & "/" & Mat                         '= 결과값에 mat값들을 누적해라
            End If
        
        Next Mat
        
        Haja_REGExp = result                                        '= 결과값을 함수값으로 반환해라
    End If
        
End Function

정규식테스트.xlsm
0.02MB

댓글