위와 같이 test_emp 테이블에서 원하는 EMPNO를 선택하여,

select *
from test_emp
where in ( ... )

select 쿼리문을 만들다 보면, EMPNO 컬럼을 드래그 복사해서 where in ( 7369, 7499 ...)
이렇게 한번에 넣고 싶을때가 많다.

이렇게 선택하고 텍스트 편집기 창에 복사하면, 다음과 같이 나온다.

위와 같이 나온 text를 전체 선택하여, 주석처리를 한다.

그리고 다음과 같이 "--" 텍스트를 ", "로 치환하고

다음과 같이 쿼리문을 작성하여 실행하면, 편하게 쿼리문을 작성할 수 있다.


이건 누구나 다 아는 내용이다.
게다가 정규식은 보이지도 않는데 어떻게 된것이냐?
 라고 생각하시는 분들을 위해서 이제부터 본격적으로 정규식을 써 보겠습니다.



위와 같이 선택된 값을 다음과 같은 쿼리문으로 만들려고 합니다.
select *
from test_emp
where
OR ( JOB = 'CLERK' AND EMPNO = '7369' )
OR ( JOB = 'CLERK' AND EMPNO = '7900' )
OR ( JOB = 'MANAGER' AND EMPNO = '7698' )
OR ( JOB = 'SALESMAN' AND EMPNO = '7654' )
이렇게 쿼리를 만들고 where 다음의 OR 글자만 지워주면 됩니다.
아래의 정규표현식을 실행해볼까요?

와우! 정말 한번에 원하는 쿼리와 근접하게 변환되었습니다.


여기까지 잘 따라오셨나요?
이쯤에서 위에서 쓰인 정규표현식을 설명하고 넘어가기로 하죠.

위에서 빨간색 네모로 표시된 정규식은 다음과 같습니다.
^(\w+)\t(\d+)^  : 한 줄의 시작부분을 의미합니다.
     ^이 없으면, 한 줄의 중간 부분에서도 정규식 패턴이 발견되면, 해당 문자열을 찾아냅니다.
() : 괄호로 묶은 곳이 2군데가 있는데요.
     괄호로 문장을 묶으면 해당 문자열을 그룹으로 치환할 수 있습니다.
     이 부분은 아래에서 더 자세히 설명드리죠.
\w : 알파벳으로 이루어진 한 문자를 찾습니다. (a~z, A~Z) 사이의 문자를 말하는거죠.
\t : 탭으로 띄어쓰기된 공간을 찾습니다.
\d : 숫자로 이루어진 한 문자를 찾습니다. (0~9) 사이의 문자를 찾습니다.
+  : 바로 앞의 문자가 1번이상 계속 반복되는 것을 말합니다.


해석하면,
1. 한 줄의 시작부분이 (\w+) 알파벳으로 연속된 문자열을 찾아서 그룹으로 묶는다.
2. \t 탭으로 띄어쓰기된 공간을 찾는다.
3. (\d+) 숫자로 연속된 문자열을 찾아서 그룹으로 묶는다.


여기까지 이해 가셨나요? 그렇다면 바꿀 문자(파란 네모안의 정규식)에 해당하는 정규식을 살펴 보기로 하죠.
OR ( JOB = '\1' AND EMPNO = '\2' )여기에서는 중요한 포인트가 바로 \1 과 \2 입니다.
\1 : 찾을 문자(빨간 네모안의 정규식)에서 첫번째로 그룹화된 문장을 이 부분에 끼워넣기 한다.
\2 : 찾을 문자(빨간 네모안의 정규식)에서 두번째로 그룹화된 문장을 이 부분에 끼워넣기 한다.

자 이제 이해가 가셨나요?
정규표현식으로 다양한 문자 치환 방법이 있는데요. 그중에서 자주 쓰이는 그룹 치환에 대해서 알아 보았습니다.

이처럼 정규표현식을 활용하면, 다양하고 복잡한 문자열을 손쉽게 바꿀 수 있습니다.

TIP.
Tab으로 띄어진 문자열을 구분하기 위해서는 다음의 정규식으로 검색한 후 치환하세요.
^(\d+|\w+)\t(\d+|\w+)\t(\d+|\w+)
2009/03/21 03:26 2009/03/21 03:26

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요