앞에서 Oracle 정규표현식 함수 regexp_instr(), regexp_substr() 함수의 기본적인 사용법을 살펴봤습니다.
이번에는 regexp_substr() 함수를 사용해서 http URL 문자열만 분리하는 정규표현식을 만들어보겠습니다.
테스트를 위해 아래와 같이 테스트 테이블을 만듭니다.
-- 테스트 테이블 생성
create table DOC_2 (
content1 varchar2(4000)
);
insert into DOC_2 values ('http://docs.oracle.com/database/121/SQLRF/functions162.htm#SQLRF06300');
insert into DOC_2 values ('http://jack-of-all-trades.tistory.com/381');
insert into DOC_2 values ('Database Download => http://www.oracle.com/downloads/#category-database');
commit;
http URL 이 다른 문자열들과 섞여있고, 뒤에 서브디렉토리가 붙어 있는데, 이것들을 제거하고 순수하게 메인 http URL 만 분리해내려고 합니다.
regexp_substr(content1, 'http://[[:alnum:]]+(\.[[:alnum:]]+)+/?') 로 기본적인 조회가 가능합니다.
패턴문자열을 하나씩 나눠서 살펴보면,
먼저 http:// 문자열이 반드시 앞에 나와야 하고,
[[:alnum:]]+ 는 영문자/숫자가 1번이상 나오는 것을 의미하고,
(\.[[:alnum:]]+)+ 는 점(.) 으로 시작하고 영문자/숫자가 1번이상(+) 나오는 패턴이 다시 1번이상(+) 반복되는 것을 의미하고,
/? 는 마지막에 슬래시(/) 문자가 0번 또는 1번 나옴을 의미합니다.
그런데, 결과에서 2번째처럼 문자열 중간에 대쉬(-)가 들어있는 경우에는 안나오고 있습니다.
대쉬(-) 문자는 [:alnum] 문자셋에 포함되지 않기 때문입니다.
대괄호 [ ] 안에 [:alnum] 뒤에 그냥 붙여주기만 하면 됩니다. => [[:alnum]-]
대괄호는 '|' (or) 의 의미이기 때문입니다.
이렇게 해서 전부다 조회되는 것을 확인할 수 있습니다.
▶ 참고 : 오라클 정규표현식(Regular Expression) 소개 메인 페이지
'IT관련' 카테고리의 다른 글
오라클 정규표현식 함수 regexp_replace 샘플예제 (Email 주소에서 @앞부분만 다른 문자열로 바꿔치기 SQL문) (0) | 2020.12.10 |
---|---|
오라클 정규표현식 함수 regexp_replace 샘플예제 (문자열 바꿔치기, 치환) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_instr, regexp_substr 샘플예제 (문자열의 위치 찾기, 추출하기) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_count 함수 샘플예제 (문자열내에 반복 패턴 카운트) (0) | 2020.12.09 |
오라클 like 구문 업그레이드 regexp_like 샘플예제 (전화번호 포맷이 일치하지 않는 데이터 찾아내기 SQL문) (0) | 2020.12.09 |