블로그 이미지
이비그치면

태그목록

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

엑셀 VBA에서 정규식(Regular Expression) 사용

2012. 3. 8. 17:35 | Posted by 이비그치면
정규식을 잘 활용하면 다량의 텍스트를 처리하는 많은 프로그래밍 분야에서

조건에 맞는 데이타 검색, 추출, 대체, 삭제등 여러가지 일을  효율적으로 처리할 수 있다

UNIX의 셀프로그래밍이나 PERL, PYTHON 또는   UltraEdit등 정규식을 지원하는

각종 프로그래밍에서 정규식으로 처리하지 않으면 손이 많이 가는 번잡스러운 일들을

깔끔하게 처리할 수가 있다

정규식을 제대로 공부하시려는 분들은 그렇게 쉽지 않은 내용이기도 하고 책의

부피도 만만치않긴 하지만 O'REILLY사의 Mastering Regular Expressions

읽어보시길 권한다

그렇지 않더라도 많이 활용할 수 있는 다음의 예들을 한번 익혀두면 여러모로

유익할것이다

수식 (Expression) : 숫자 또는 숫자를 나타내는 기호와 연산자로 구성(표현 express)
                             예 : a+b+c, 3a+2

정규식(Regular Expression) : 문자열 Pattern을 문자(literal)와 meta문자(metachracters)
                                           로 구성(표현)  
                                          정규란 말은 아마 정해진 규칙(패턴)을 나타내는 단어인듯싶다                                예 : abc, a[bc]c, .*
 
복잡한 무늬도 있고 단순한 무늬도 있듯이 문장내에서 나타나는 특정 문자열이 단순한 
정규식으로 표현될수도 있고 매우 복잡해서 거의 암호수준으로 표현될수도 있다 

[ Metacharacters ]

--  Single Character Match
 
           .   임의의 single character
        [...]  각괄호내에 열거된 문자들중 하나의 character
        [^...]  각괄호안에 열거된 문자들은 제외한 하나의 character(여기서 ^은 not)
       \char  역슬래쉬(\)뒤의 문자 escape시킴(문자의 특별한의미 제거)


--  반복(혹은 횟수지정)

          ?  1 or 0   (예 : foo? : fo, foo 매치)
          *  0 이상 
          +  1 이상
   {min, max}  최소 min(숫자)만큼 match, 최대 max(숫자)까지 match


--  Position Match

          ^  line의 시작위치 match
          $  line의 끝위치 match
         \<  단어의 시작위치
         \>  단어의 끝위치


-- 기타

          |  선택(or) match  (예 : foo|bar : foo 또는 bar match)
       (...)  패턴을 match && save the match(for backreferences)
    \1, \2, ...  위의 괄호로 save되어있는 text, 괄호로 저장한내용이 복수일때 번호순


-- 특정기능문자의 match

\t    : tab
\n   : newline
\r    : carriage-return
\s   : 임의의 whitespace(space, tab, newline, formfeed등)
\S   : whitespace 제외한 임의의 한문자
\w  :  [a-zA-Z0-9_]
\W  :  not \w
\d   : [0-9] 즉 숫자
\D   : 숫자가 아닌 임의의 한문자

[ VBA 에서의 사용 ]

-- Early Binding : VBA 창에서  도구->참조->Microsoft  VBScript Regular Expression 5.5 

-- Late Binding :  프로그램안에서 set

    Dim RegEx As Object
    Set RegEx = CreateObject("vbscript.regexp")

-- Methods

 Execute  패턴매치 실행
 Replace  패턴을 찾아서 새로운값으로 대치
 Test  패턴을 찾는지 확인 (결과값 True 또는 False) 


-- Method Properties

 Pattern  정규식 
 Global  True or False(default) True일경우 전체탐색 False 첫매치까지만
 IgnoreCase  True or False(default) True : 대소문자구분안함, False :  대소문자구분
 MultiLine  True or False(default)  True : 복수라인탐색, False : 현재라인만 탐색