조건:
1. [Central]의 글자는 바뀔수 있습니다..
2. INTERIOR_COLOR등의 값도 매번 변화 됩니다.
[ ] 안에 정의된 값과 = 이전에 정의된 값도 실제 사용시 불필요해서 지우고 싶습니다.
검토 감사합니다.
입력정보
select '[Central]INTERIOR_COLOR != BASE_COLOR' pval from dual
union all
select '[Central]INTERIOR_COLOR = DARK_GRAY & ([Central]NATIONAL_CODE = EURO | [Central]NATIONAL_CODE = UK)' from dual
union all
select '[Central]EXTERIOR_COLOR = ELITE GREY' from dual
union all
select '[Central]VIN = VIN_001 | [Central]VIN = VIN_002' from dual
;
결과물
pval 속성
!BASE_COLOR
DARK_GRAY & (EURO | UK)
ELITE GREY
VIN_001 | VIN_002
WITH TMP1 AS ( select '[Central]INTERIOR_COLOR != BASE_COLOR' pval from dual union all select '[Central]INTERIOR_COLOR = DARK_GRAY & ([Central]NATIONAL_CODE = EURO | [Central]NATIONAL_CODE = UK)' from dual union all select '[Central]EXTERIOR_COLOR = ELITE GREY' from dual union all select '[Central]VIN = VIN_001 | [Central]VIN = VIN_002' from dual ) SELECT A.* , REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(pval, '\[Central\]INTERIOR_COLOR|\[Central\]NATIONAL_CODE|\[Central\]EXTERIOR_COLOR|\[Central\]VIN', '') , '!=', '!') , '=| ', '') TXT FROM TMP1 A ;
치환으로 해봤습니다..
어설프긴 한데...찾아보고 만들어봤습니다~
with t as ( select '[Central]INTERIOR_COLOR != BASE_COLOR' pval from dual union all select '[Central]INTERIOR_COLOR = DARK_GRAY & ([Central]NATIONAL_CODE = EURO | [Central]NATIONAL_CODE = UK)' from dual union all select '[Central]EXTERIOR_COLOR = ELITE GREY' from dual union all select '[Central]VIN = VIN_001 | [Central]VIN = VIN_002' from dual ) select replace(regexp_replace(pval,'\[[A-Za-z]+\][A-Z_]+ ',''),'= ','') from t
대괄호는 문자 패턴을 지정하는 부분입니다. (반복 의미 아님)
반복은 + 입니다.
^ 은 대괄호 안에서는 제외를 의미하고, 대괄호 없이는 문자열의 시작부분을 의미합니다.
대괄호 자체를 정규식의 의미가 아닌 일반 대괄호로 인식시키기 위해 대괄호 안에 넣었습니다. [[]
일반문자로 인식시기기 위한 다른 방법으로는 \ 문자를 붙이는 방법도 있습니다. \[
[[] : 대괄호시작
[^!=] : 느낌표나 등호가 아닌 문자
[^!=]+ : 느낌표나 등호가 아닌 문자의 반복(1개 이상 반복)
[[][^!=]+ : 대괄호시작 부터 느낌표나 등호가 아닌 문자의 반복