WITH T AS (
SELECT '대전, 부산, 강원도(강릉시, 속초시, 동해시), 광주, 경상남도(김해시, 창원시), 경상북도(경주시, 포항시, 영덕군)' AS AREA FROM DUAL
)
이런식의 데이터가 있을경우
대전 | |
부산 | |
강원도 | 강릉시, 속초시, 동해시 |
경상남도 | 김해시, 창원시 |
경상북도 | 경주시, 포항시, 영덕군 |
원하는 결과물은 이렇습니다.
콤마로는 짤리는데 가로안에 있는것 까지 전부 짤리네요. 예상하기로는 한번에 안되고 한번 짤라서(대전,부산,강원,경남,경북) 다시 한번 가로안에 있는것들을 짤라야 할것같은데
좀 힘드네요..
힌트나 좀 부탁드립니다.
1. 대괄호는 패턴문자를 표현합니다.
- a-z 은 그냥 문자이지만
- [a-z] 은 a 부터 z 까지의 문자를 의미합니다.
2. 소괄호는 묶음 단위를 표현합니다.
- ((aa)(bb)) 이렇게 괄호가 3개가 있을 때
- \1 은 첫번째 괄호를 의미합니다. aabb
- \2 은 두번째 괄호를 의미합니다. aa
- \3 은 세번째 괄호를 의미합니다. bb
3. ^ 는
- 대괄호 밖에서는 문장의 시작을 의미합니다.
- 대괄호 안에서는 부정(아니다)을 의미합니다.
- ^a 는 맨 앞 a로 시작하는 것을 의미
- [^a] 는 a가 아닌 문자를 의미
4. 문자의 반복 (+ * ? {1,2})
- (a)+ 는 a가 1개이상
- (a)* 는 a가 0개이상
- (a)? 는 a가 0개 또는 1개
- (a){2} 는 a가 2개
- (a){2,} 는 a가 2개 이상
- (a){,2} 는 a가 2개 이하
- (a){2,4} 는 a가 2~4개
- (.){3} 아무문자(.)나 3개
5. \ (역슬래쉬)은
- 특수기능을 하는 문자(위에 예를 들 문자)의 기능을 제거하여 일반 문자화 시킴
- . 은 아무 문자를 뜻하지만
- \. 은 쩜을 뜻함
작성한 정규식을 해석해 보면
'[^,( ]+(\(([^)]+)\))?' 은 크게 두가지 묶음으로 나뉩니다.
1. [^,( ]+
2. (\(([^)]+)\))?
1번은 (컴마|괄호열기|공백)등이 아닌 문자가 여러개 반복 = 괄호시작 전 문자
2번은 (괄호열기 + (괄호닫기 아닌문자 여러개) + 괄호닫기) 가 0개 또는 1개 = 괄호 이후 문자
여기서 \2 는 두번째 괄호 (괄호닫기 아닌문자 여러개) 를 의미