정규표현식 엔진은 TEXT 처리를 최강 목표로 맹글어진
Perl 언어의 엔진이 일반적으로 최강으로 받아들여지고, 다른 언어들은 그것의
일부를 가져다 쓰거나, 모방을 하게 된당.
개발자들이 사용하는 IDE(이클립스,VSCODE등)나 에디터 에서 키워드 색깔이
일괄적으로 바뀌는 데에 정규표현식 엔진이 사용된당.(느낌?)
느군강?? SQL에서 정규표현식을 물어 뜨드려 했던 것 같당! 무섭당!
마니 복잡한 걸 맹글 땐 껌색의 도움을 받공, 아래 정도의 내용으로 안분지족 해보장!
문자 | 의미 |
. | 암거나 1개 문자 |
? | 없거나 1개 문자 |
| | A|B A 또는 B |
[] | [abc | 가나다] abc 또는 가나다 |
[-] | [a-z] a에서 z까지 [0-9] 0에서 9까지 |
[^] | [^a] a가 아닌 것 |
\ | escape 처리 |
^ | ^e7e e7e로 시작하는 거 |
$ | e7e$ e7e로 끝나는 거 |
오라클 제공 정규표현식(REGEXP) 명령어 세트
명령 | 결과 | 비고 |
REGEXP_LIKE | True/False | 조건으로만 사용가능 |
REGEXP_REPLACE | 치환 | |
REGEXP_INSTR | 시작위치 | |
REGEXP_SUBSTR | 일치하는 문자열 | |
REGEXP_COUNT | 일치하는 패턴 횟수 |
REGEXP_LIKE 불량 예시 (조건으로 사용되지 않아서 에렁)
select REGEXP_LIKE('I Like KSJ Very Much But Little Love', 'ksj', 'i') from dual;
-- 에러 ORA-00904: "REGEXP_LIKE": invalid identifier
REGEXP_LIKE 양호 예시(조건으로 사용)
SELECT CASE
WHEN REGEXP_LIKE('I Like KSJ Very Much But Little Love', 'ksj', 'i')
THEN 'KSJ 좋앙'
ELSE 'KSJ 별롱'
END 결과
FROM DUAL;
REGEXP_LIKE 양호 예시(꼬옥 누느로 결과 화긴사살)
-- 결과 True 인 경우
select * from dual where REGEXP_LIKE('I Like KSJ Very Much But Little Love', 'ksj', 'i');
-- 결과 False인 경우
select * from dual where REGEXP_LIKE('I Like KSJ Very Much But Little Love', 'gsj', 'i');
REGEXP_REPLACE 예시(척보면 앱니당)
select REGEXP_REPLACE ('E7E like jenni', '[j|J]enni', 'Roze') from dual;
REGEXP_INSTR 예시(뜬금포 프로시저)
bind 변수 먼징 알디용?
-- 괘니 PROCEDURE 이용
VARIABLE startindex NUMBER;
DECLARE
emailaddr VARCHAR2(30) := '';
BEGIN
SELECT REGEXP_INSTR('my email address is e7e@e7e.com', '\w+@\w+(\.\w+)+') INTO :startindex FROM DUAL;
DBMS_OUTPUT.PUT('이메일 시작위치: ');
DBMS_OUTPUT.PUT_LINE(:startindex);
SELECT SUBSTR('my email address is e7e@e7e.com', :startindex) INTO emailaddr FROM DUAL;
DBMS_OUTPUT.PUT('이메일주소: ');
DBMS_OUTPUT.PUT_LINE(emailAddr); -- emailAddr 대소문자 상관없음에도 괘니 주목
END;
-- 괘니 SUB QUERY 이용
WITH selindex AS
(
SELECT REGEXP_INSTR('my email address is e7e@e7e.com', '\w+@\w+(\.\w+)+') as sindex FROM DUAL
)
SELECT SUBSTR( 'my email address is e7e@e7e.com',sindex) FROM selindex;
REGEXP_SUBSTR 예시(꼬옥 누네 힘주어 한 줄씩 파라미터값과 결과값 의미 확인)
-- 매개변수 순서별 의미
-- 대상문자열, 패턴, 시작위치(최소1),발생횟수,매치 옵션 , subexpr(0~9) 곧 ()의 의미
-- 매치 옵션 i,c,n,m,x
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1) AS 결과 FROM DUAL;
-- null
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1,'i') AS 결과 FROM DUAL;
-- AbCdEFGH
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1,'i',1) AS 결과 FROM DUAL;
-- AbC
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1,'i',2) AS 결과 FROM DUAL;
-- dEFGH
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1,'i',3) AS 결과 FROM DUAL;
-- EF
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1,'i',4) AS 결과 FROM DUAL;
-- GH
SELECT REGEXP_SUBSTR('AbCdEFGH', '(abc)(d(ef)(gh))', 1,1,'i',5) AS 결과 FROM DUAL;
-- null
REGEXP_COUNT 예시
-- c는 대소문자 구분, default
-- i는 대소문자 무시
SELECT REGEXP_COUNT('e7e Manse EE', 'e', 1, 'c') AS 결과 FROM DUAL;
-- 3
SELECT REGEXP_COUNT('e7e Manse EE', 'e', 1) AS 결과 FROM DUAL;
-- 3
SELECT REGEXP_COUNT('e7e Manse EE', 'e', 3, 'i') AS 결과 FROM DUAL;
-- 4
혹여 쓸 일이 있다면 그저 한번씩 써보장! 그거로 퉁분하고 퉁분탕!
따아쓰암이 쪼메만 더 내리공,
빗방울 갯수가 따블로 파편되어 공허한 음악으로 흐른다면
화들짝 내 유전자의 감수성이 깨어 날 지도 모르는 나알씨당.
머 콩알 콩알 내리는 비도 끝 없는 터널로 날 잘도 이끈당.
금수저의 손바닥 비늘을 계속 긁고 긁어내어
그 손이 위엄있는 주방장의 유전자란 사실에
흠짓 당황스러웠지만, 그렇지만 마니 기뻤당
비밀스런 다행이었당.
비가 억수로 오고, 등골이 쪼메 오싹해지는
천둥도 잊혀지지 않기 위해 노력하는 바로 그런 날에
창이 어엄청 넓고 소온님은 그키 저근 사암겹살 지베서,
빗소리 웅장한 창가에 마주 말고,
나란히 앉아 거나하게 마시고, 헤어지는 꾸믈 꾸었당.
뒤 돌아가고 싶지만, 결코 뒤 도라 보면 안되는
그런 애트탐을 앙마에게 카톡 선물하기로
선물하고픈 그런 날에 마리당.
비얌! 너의 따뜻한 소리로
오싹함으로 꽁꽁된 내 유전자의 이불을
살짜기 살짜기 걷어다옹!
내 유전자 향은 라일락 향이당!~~~
아니야, 아냐 니 향은 목련이얌, 목련향이 다그친당!~~
https://www.youtube.com/watch?v=IJ2To9o-fRc
oracle (오라클) sys 또는 system 암호 머였을깡? (0) | 2024.03.13 |
---|---|
오라클 도커(Docker) 설치 (free 23c) (0) | 2023.11.15 |
오라클 관리자 권한을 가진 계정 삭제 (0) | 2023.05.11 |
오라클 서버 버젼 확인 (0) | 2023.05.11 |
오라클 유저생성 앤 hr 등 샘플 스키마 설치 (0) | 2023.05.11 |