밑에 REGEXP_SUBSTR 의 일치 값..추가 문의 드립니다.. 2 6 2,815

by 동동동 [Oracle 기초] oracle 정규표현식 [2021.10.21 09:35:17]


안녕하세요..마농님 답변을 참고 하여 밤새 해보고 있는데..어렵네요..ㅠㅠ

WITH TMP AS (
SELECT '방송사별 유명 MC는 MBC는 (유재석) KBS는 (강호동) 이 있고 개인적으로 (신동엽)도 좋아한다.' TXT FROM DUAL
)
SELECT REGEXP_SUBSTR(TXT, '\(.+?\)') AS REX1
     , REGEXP_SUBSTR(TXT, '\(.+\)') AS REX2
     
     , REGEXP_REPLACE(txt, '\(.+?\)', '')
     , REGEXP_REPLACE(txt, '[^\(.+\)]', '')
  FROM TMP ;

위의 데이터 에서 괄호안의 데이터를 가져오려고 하는데요..

결과
(유재석)(강호동)(신동엽)

 

또는

결과
유재석,강호동,신동엽

 

과 같은 결과 값을 얻고 싶습니다..정규표현식..어렵네요...ㅠㅠ

===============================

 

질문을 올리고 이전 마농님 답변을 참고로 어찌 하다보니 답을 얻었는데요...

WITH TMP AS (
SELECT '방송사별 유명 MC는 MBC는 (유재석) KBS는 (강호동) 이 있고 개인적으로 (신동엽)도 좋아한다.' TXT FROM DUAL
)
SELECT REGEXP_REPLACE(txt, '(\(.+?\))|.', '\1')
  FROM TMP ;

저 뒤에 |. (=또는 문자 하나) 의 의미가 어떻게 해석 되는 건지 알 수 있을까요??

 

by 마농 [2021.10.21 09:47:30]
WITH tmp AS
(
SELECT '방송사별 유명 MC는 MBC는 (유재석) KBS는 (강호동) 이 있고 개인적으로 (신동엽)도 좋아한다.' txt FROM dual
)
SELECT txt
     , REGEXP_REPLACE(txt, '(\([^)]+\))|.', '\1') x
     , SUBSTR(REPLACE(REGEXP_REPLACE(txt, '(^|\))[^(]+'), '(', ','), 2) x
  FROM tmp
;

 


by 동동동 [2021.10.21 09:50:14]

마농님 빠른 답변 감사드립니다...

질문 수정 중에 벌써 답글을 주셨네요...감사합니다..^^


by 동동동 [2021.10.21 10:05:45]

마농님..설명 좀 부탁드려도 될까요??

REGEXP_REPLACE(txt, '(\([^)]+\))|.', '\1')  -- 서브패턴 괄호('(') 이고 괄호(')') 가 아니고 +(1~여러개) 문자가 있고 괄호(')') 인것 또는 점(. = 아무 문자 하나)

에서 또는 점을 한 의미가 어떻게 되는지 설명 부탁드려도 될까요??

 

REGEXP_REPLACE(txt, '(^|\))[^(]+')  -- 시작문자가 괄호(')') 이면서 괄호('(') 가 아닌것(??) 이 1~여러개

이건 의미 파악이 잘 안되네요...ㅠㅠ

 

답글 감사드립니다...


by 마농 [2021.10.21 10:14:09]

REGEXP_REPLACE(txt, '(\([^)]+\))|.', '\1') 에 대한 설명
1. \([^)]+\) : 괄호로 감싸진 문자열 -> 시작괄호 다음에 종료괄호가 아닌 문자가 쭈욱 오다가 종료괄호로 끝남
2. (\([^)]+\)) : \1 에 대응시키기 위해 괄호로 감쌈.
3. |. : 또는 다른 문자 즉 괄호로 감싼 문자 이외의 문자를 의미
4. \1 : 첫번째 괄호를 의미하는데
- 1번(괄호로 감싸진 문자열) 이 선택된 경우에는 자기 자신 그대로가 되고
- 3번(이외의 문자) 이 선택된 경우에는 해당되는 괄호가 없으므로 빈 문자열이 됨


by 마농 [2021.10.21 10:20:20]

REGEXP_REPLACE(txt, '(^|\))[^(]+') 에 대한 설명
1. (^|\)) : 시작부분 또는 종료괄호
2. [^(]+ : 시작괄호가 아닌 문자열 여러개
즉. 종료괄호와 시작괄호 사이에 있는 문자 를 지우겠다는 의미


by 동동동 [2021.10.21 10:28:06]

마농님 답급 감사드립니다...제가 해석한 의미와 달랐네요..ㅋ

정말 큰 도움이 되었습니다...감사합니다...^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입