본문 바로가기
개발/정규식

정규식 표현

by 루 프란체 2018. 3. 10.

정규표현식

설명

예문

결과값

추가설명

^x

문자열이 x로 시작함

REGEXP_LIKE(LAST_NAME, '^A')

Atkinson 대소문자 구별
Ande
Abel

x$

문자열이 x로 끝남

REGEXP_LIKE(LAST_NAME, 'n$')

Bernstein 대소문자 구별
Olsen
McEwen

.

임의의 한 문자

REGEXP_LIKE(LAST_NAME, 'n.z')

Lorentz

대소문자 구별

x+

x가 1개 이상 존재함

REGEXP_LIKE(LAST_NAME, 'in+s')

Atkinnson 예시는 k 뒤에 i 가 1개 이상 오는 것을 찾는다.
단독으로 사용하기는 의미 없을 것 같다.
Marvins
Perkins
Higgins

x*

x가 0개 이상 존재함

REGEXP_LIKE(LAST_NAME, 'in*s')

Weiss 예시는 k 뒤에 i 가 0개 이상 오는 것을 찾는다.
단독으로 사용하기는 의미 없을 것 같다.
Bissot
Atkinnson
Vishney
Marvins
Perkins
Mavris
Higgins

x?

x가 있거나 없거나

REGEXP_LIKE(LAST_NAME, 'in?s')

Weiss 예시는 k 뒤에 i 가 있거나 없는 것을 찾는다.
단독으로 사용하기는 의미 없을 것 같다.
Bissot
Vishney
Marvins
Perkins
Mavris
Higgins

x|y

x 또는 y 를 찾음

REGEXP_LIKE(LAST_NAME, 'A|B')

Austin 대소문자 구별
Baida
Bissot
Atkinnson
Bernstein


여기에서 위 표에 나오는 ?, *, + 의 차이점은 아주 명확하다.

처음에는 조금 헷갈릴 수 있겠지만 사실 알고 보면 정말 별 것 없다.


? 는 단 한 글자에 한해 있을 수도 없을 수도 있는 것을 찾는 것이다. 절대 여러 글자가 올 수 없다. 

즉, 해당 한 문자의 존재 여부가 0 or 1 인 것이다.


* 은 있을 수도 있고 없을 수도 있는 것을 찾는다는 것에서 ? 와 비슷하지만 0 or 1 이 아닌 0 or 무한대이다.

마찬가지로 단 한글자에 한해서이다.


+ 는 위의 두 문자와 다르게 반드시 존재해야 하는 것이고 1 or 무한대이다.


그럼 여기서 위의 ?, *, + 이 겨우 한 글자 밖에 대응을 못 하니 별로인 거 아니냐 할 수도 있지만

위의 예시 중 임의의 한 문자는 . 이라고 했으니 .?, .*, .+ 의 형태로 사용한다면 굉장히 유용하게 사용할 수 있다.


마지막의 | 의 경우에는 반드시 한 글자만 가능한 것은 아니고 그룹화를 사용해 (http)|(https) 같은 형태로도 사용 가능하다.

괄호는 그룹 표현인데 아래를 참고하자.


정규표현식

설명

예문

결과값

가설명

a(bc)*

a 뒤에 bc 가 0개 이상

REGEXP_LIKE(LAST_NAME, 'T(ay)')

Taylor 대소문자 구별

a(bc){1,3}

a 뒤에 bc 가 1~3개 사이

REGEXP_LIKE(LAST_NAME, 'A(ee){1,5}')

Aeeeeleeceen 대소문자 구별
Aeeneeleeceen

REGEXP_LIKE(LAST_NAME, 'A(ee){2,5}')

Aeeeeleeceen

(a|bc)de

ade 또는 bcde

REGEXP_LIKE(LAST_NAME, '(m|on)i')

Smith 대소문자 구별
Geoni

(a|b)+c

a 나 b 가 한 번 이상 온 후 c

REGEXP_LIKE(LAST_NAME, '(a|t)+z')

Lorentz 대소문자 구별
Errazuriz
Gatataaz

^.{3}$

3문자로만 되어 있는 문자

REGEXP_LIKE(LAST_NAME, '^.{3}$')

Gee 대소문자 구별
Seo
Lee

[]

괄호 안 문자 중 매핑되는 문자

REGEXP_LIKE(LAST_NAME, '[AC]')

Ande 대소문자 구별

중간 문자도 포함 (예 : abCde)
Abel
Cabrio

AnCroidA

[^abc]

괄호 안 문자를 제외한 문자

REGEXP_LIKE(LAST_NAME, '[^AC]')

Ande

대소문자 구별


중간 문자도 포함 (예 : abCde)

Abel

Cabrio

AnCroidA

[ab]

a 또는 b (a|b 와 동일한 표현)

REGEXP_LIKE(LAST_NAME, '[w|z]')

Lorentz 대소문자 구별
Marlow
Ladwig
Errazuriz

[a-d]

a~d (a|b|c|d, [abcd] 와 동일)

REGEXP_LIKE(LAST_NAME, '[a-d]')

De Haan 대소문자 구별
Hunold
Pataballa
Greenberg

^[a-zA-Z]

a~z, A~Z 로 시작하는 문자열

REGEXP_LIKE(LAST_NAME, '^[a-zA-Z]')

King

대소문자 구별

Aeeeeleeceen
De Haan
Hunold

[0-9]%

%(문자) 앞에 숫자가 있음

REGEXP_LIKE(컬럼명, '[0-9]t')

0t  
1t
5t
9t

%[^b-z]%

%(문자) 와 %(문자) 사이에
b-z 를 제외한 문자가 옴

REGEXP_LIKE(LAST_NAME, 'i[^b-z]s')

Tobias 대소문자 구별


'개발 > 정규식' 카테고리의 다른 글

정규식 표현  (0) 2018.03.10

댓글0