막상 하려니 잘 안되서 도움을 받고자 합니다.
"성균관"이라 함은 조선시대 대학을 말한다.
"성균관"이란 조선시대 대학을 말한다.
텍스트를 정규표현식으로 해서 " " 안의 값과 ~라 함은(또는 란) 뒤의 값으로 분리해서 추출하고자 합니다.
근데 잘 표현이 안되는 부분이 ~라 함은 / ~란 두 문자열중에 하나가 나와라... 라는 표현을 제대로 할 수가 없네요...
[이]?[라 함은|란] ==> 으로 하니.. 결과가 다르고
[이]?(라 함은|란) ==> 으로 하니... \1, \2, \3 값 등에 쓸데없는 "라 함은" 값이 봅혀버리고...
[이]?라 함은|란 ==> 으로 하니.. 결과가 다르고...
결국 제대로된 형태를 찾지 못해서 질문드립니다. 문자열과 문자열 둘중에 하나가 나와라 라는 표현을 어떻게 해야 하나요...
WITH TABLE_A AS (
SELECT 1 AS NUM, '"성균관"이라 함은 조선시대 대학을 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 2 AS NUM, '"성균관"란 조선시대 대학을 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 3 AS NUM, '"성균관"이라 함은 조선시대 대학을 말한다' AS TXT FROM DUAL UNION ALL
SELECT 4 AS NUM, '"성균관"란 조선시대 대학을 말한다' AS TXT FROM DUAL UNION ALL
SELECT 5 AS NUM, '성균관이라 함은 조선시대 대학을 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 6 AS NUM, '“성균관”이 시청함.' AS TXT FROM DUAL UNION ALL
SELECT 7 AS NUM, '“성균관"이라 함은 조선시대 대학을 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 8 AS NUM, '"성균관”이라 함은 조선시대 대학을 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 9 AS NUM, '"성균관"이라 함은 조선시대 대학을 말한다."강아지"라 함은 개새끼를 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 10 AS NUM, '"성균관"이라 함은 조선시대 대학을 말한다."강아지"란 개새끼를 말한다.' AS TXT FROM DUAL UNION ALL
SELECT 11 AS NUM, '"성균관"이라 함은 조선시대 대학을 말한다."강아지"란 개새끼를 말한다' AS TXT FROM DUAL UNION ALL
SELECT 12 AS NUM, '“성균관"이라란 조선시대 대학을 말한다.' AS TXT FROM DUAL
)
, TABLE_B AS (
SELECT '[\"|“]([^\"]*)[\"|”][이]?(라 함은|란) (.+[.|>| ])$' AS PATTERN FROM DUAL
)
SELECT NUM, TXT
, REGEXP_REPLACE(TXT, PATTERN, '\1', 1) AS REPLACE21
, REGEXP_REPLACE(TXT, PATTERN, '\2', 1) AS REPLACE22
, REGEXP_REPLACE(TXT, PATTERN, '\3', 1) AS REPLACE23
, REGEXP_REPLACE(TXT, PATTERN, '\4', 1) AS REPLACE24
, REGEXP_REPLACE(TXT, PATTERN, '\5', 1) AS REPLACE24
FROM TABLE_A
, TABLE_B
WHERE 1=1
-- AND REGEXP_LIKE(TXT, PATTERN)
ORDER BY NUM
;
|