본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 정규식
 

RegExLib.com Regular Expression Cheat Sheet (.NET Framework)

\p{name}Matches any character in the named character class specified by {name}. Supported names are Unicode groups and block ranges. For example, Ll, Nd, Z, IsGreek, IsBoxDrawing.

regexlib.com


- 다양한 정규식 기호를 확인할 수 있다.

- 검색해서 다른 사람들이 만들어 둔 정규식도 참고할 수 있다.

- 내가 만든 정규식 테스트도 가능!

 


■문자일치

- 메타문자(정규표현식에서 사용하는 기호) => . ^ $ * + ? { } [ ] \ | ( ) 사용  

- [ ] : 문자 하나를 비교함.

- [abc] 이면 a or b or c 문자와 일치하는지 확인함.(하나라도 있으면 True)
    ~[abc] : 내가 입력한 문자열에서 a가 있는지 -> b가 있는지 -> c가 있는지

- [(abc)] 이면 abc와 일치하는지 확인함.(연달아 하나로 있어야 True)

- [abc]는 [a-c] 처럼 - 를 사용하여 범위를 사용 가능함.(하나라도 있으면 True)

- [ ] 안에서 ^는 포함하지 않는것을 의미함.
     
- [^a] 는 a를 제외한 모든 문자와 일치함의 의미함.

- [a^] 는 a or ^ 와 일치하는지를 의미함(순서주의)

\w는 모든 영문자숫자를 의미함 [a-zA-Z0-9] 와 동일함. (특수문자만 빼고) 

\W는 모든 영문자숫자가 아닌 것을 의미함. [^a-zA-Z0-9]와 동일함.

\d는 모든 십진숫자를 의미함 [0-9]와 동일함.

\D는 모든 숫자가 아닌 문자를 의미함 [^0-9]와 동일함.

- . 은 개행문자(줄바꿈 문자)를 제외한 모든 문자를 의미함.

|(파이프) : or 의미, Crow|Servo 는 Crow or Servo 일치함. 
    ~ | 문자자체를 일치하려면 \| 또는 [|] 를 사용함.

: [ ] 안에서가 아닌 ^의 의미는 줄의 시작 부분의 일치를 의미함
    ~ ^From 에서 From Korea 는 일치하지만, I am From Korea는 일치하지않음

$ : 줄의 끝부분과 일치하는지 확인함.
    ~ }$ 에서 {block} 는 일치하지만, {block}; 는 일치하지 않음

■ 반복하기

* : 0번 이상 일치하는지 확인함.
    ~ca*t 는 a문자가 0번 이상인지 확인함. ct, cat, caaat ... : True

+ : 1번 이상 일치하는지 확인함.
    ~ca+t 는 a문자가 1번 이상인지 확인함. cat, caaat ... : True
    
? : 1번이나 0번과 일치하는지 확인함.(있는지 없는지 확인)
    ~home-?brew는 homebrew와 home-brew와 일치함.
    
{m, n} : 최소 m번 반복, 최대 n번 반복을 확인함.
    ~a/{1,3}b 는 a/b, a//b, a///b와 일치함.
    ~{0, } 는 *와 동일함.
    ~{1, } 는 +와 동일함.
    ~{0,1} 는 ?와 동일함.


** 파이썬 공부할 때 정리해뒀던 것 중 공통된 것 가져왔다. ( 파이썬 카테고리에 포함되어 있음~)


//REGEX_LIKE

- 정규식을 이용한 패턴 비교

- 정규식은 오라클에서 직접 제공하는 게 아니다보니 그냥 LIKE가 아닌 REGEX_LIKE로 비교해야 함.
    ~ WHERE REGEXP_LIKE(first_name,'^Ste(v|ph)en$')

- 시작 기호 : ^  /  끝 기호 :$     
    ※이 기호들을 사용할 경우, 중간에 원하는 부분이 포함되어 있으면 검색되지 않는다.  꼭 지정 표현으로 시작+끝나야 함!


SELECT * FROM NOTICE WHERE REGEXP_LIKE(TITLE , '01[016-9]-\d{3,4}-\d{4}');

SELECT ID, PWD, NAME, EMAIL FROM MEMBER WHERE REGEXP_LIKE(EMAIL , '\D\w*@\D\w*.(org|net|com)');

'데이터베이스(DB) > Oracle' 카테고리의 다른 글

[Oracle] 문자열 함수  (0) 2023.02.16
[Oracle] SELECT문  (0) 2023.02.14
[Oracle] 연산자  (0) 2023.02.13
[Oracle] 트랜잭션 처리  (0) 2023.02.11
[Oracle] 데이터 조작(DML)  (0) 2023.02.10