엑셀VBA에서 정규식 사용하기 연습
입력폼에서 정규식을 사용하면 코드를 간결하게 만들수 있다. 고 하지만, 음 귀찮다. 간단한 것부터 해보자.
먼저 VBE 편집기의 도구 > 참조 > Microsoft VBScript Regular Expressions
를 활성화 시키자.
정규식 object를 생성해야한다. 여기서는 re1
이라는 이름으로 정규식 object를 생성했다.
생성된 re1
object 안에 pattern
과 옵션을 설정한다.
Pattern : 검색할 문자열의 패턴을 정해주는 필수항목
IgnoreCase : 검색할 문자열에서 대/소문자 구분 - true인 경우, 무시
Global : 패턴과 일치하는 전체항목을 찾을지, 첫번째 항목만 찾을지 결정 - true인 경우, 모든 항목 검색
MultiLine : True인 경우, 줄바꿈을 무시하고 전체 서치
패턴 구문
구분 | 구문 | 내용 |
문자열 | . | .이 표시된 만큼의 모든 문자를 일치처리, 줄바꿈 제외 |
문자열 | [characters] | 대괄호에 포함된 문자 중 하나라도 포함되어 있으면 일치 |
문자열 | [^characters] | 대괄호에 포함되지 않은 문자 중 하나라도 포함되어 있으면 일치 |
문자열 | [start-end] | 대괄호 안에 있는 범위에 해당하면 일치 |
문자열 | \w | 영문자, 숫자, 밑줄 중 한가지 포함시 일치 / 공백 미일치 |
문자열 | \W | 영문자, 숫자, 밑줄이 아닌 모든 문자 일치 |
문자열 | \s | 공백(띄어쓰기, 탭) 일치 |
문자열 | \S | 공백을 제외한 모든 문자 일치 |
문자열 | \d | 숫자(0~10) 일치 |
문자열 | \D | 숫자를 제외한 모든 문자 일치 |
문자열 | \ | 검색 조건으로 특수문자 입력 |
문자열 | \t | 탭 공백 일치 |
문자열 | \r | vbCr 일치 |
문자열 | \n | vbNewLine 일치 |
수량 | * | 0개 이상 항목 일치 (0개를 포함) |
수량 | + | 1개 이상 항목 일치 (0개를 제외) |
수량 | ? | 1개 이하 항목 일치 (0개를 포함) |
수량 | {n} | 해당 패턴이 n번 나오면 일치 |
수량 | {n,} | 해당 패턴에 n번 이상 나오면 일치 |
수량 | {n,m} | 해당 패턴에 n~m 사이에서 나오면 일치 |
그룹 | (expression) | 패턴을 그룹화하여 일부 추출 |
아래와 같이 설정한 경우, 공백 전체를 검색하게 된다.
test
아래 코드로 공백 여부를 확인해 본다.
re1을 정규식 Object로 만들면, 아래 메쏘드 중 하나를 실행할 수 있다.
Execute : 패턴을 실행하며 결과값을 객체에 담는다. 하나씩 값을 꺼낼 수 있다.
Replace : 패턴에 일치하는 값을 검색해서 인수로 입력한 값으로 대체한다.
Test : 패턴을 찾아서 일치하는 것이 있는지 결과값을 리턴 한다.
이를 대상 텍스트에 적용해보면, 아래와 같이 공백 포함 여부를 확인할 수 있다.
replace
replace 메쏘드를 통해 패턴과 일치하는 내용을 일괄 변경할 수 있다.
아래 코드는 특정 텍스트를 replace 하는 예시이다.
execute
execute를 통해 새로운 객체에 결과값을 받아서 호출할 수 있다.
아래 코드는 숫자를 골라낸 예시이며, String 타입으로 받아오게된다.
이하 작성 중...
아씨... 귀찮아..