Oracle
[Oracle] 정규표현식
kr98gyeongim
2024. 4. 11. 11:47
・정규표현식
:REGEXP_LIKE( string, pattern [, match] )
・어설션(Assertions)
:행이나 단어의 시작/끝을 나타내는 경계와 (앞 뒤를 읽고 조건식을 포함한) 어떤 식으로든 매치가 가능한 것을 나타내는 다른 패턴이 포함된다
정규식 패턴 | 설명 | 예제 |
^ | 문장의 시작 (특정 문자열로 시작) | REGEXP_LIKE(:checkText, '^[0-9a-zA-Z]{1}') |
$ | 문장의 끝 (특정 문자열로 끝남) | REGEXP_LIKE(:checkText, '[0-9]{3}$') |
・수량자(Quantifiers)
:일치시킬 문자 또는 표현식의 개수를 의미
정규식 패턴 | 설명 |
? | 없거나 있거나 (zero or one) |
* | 없거나 있거나 많거나 (zero or more) |
+ | 하나 또는 많이 (one or more) |
{n} | n개가 있는 |
{min,} | 최소 |
{min, max} | 최소, 그리고 최대 |
======================
일할 때 자주 쓰는 정규식
======================
예제1)
첫번째 문자가 숫자만 NOT REGEXP_LIKE(:checkText, '^[0-9]{1}')
SELECT
'체크하는 텍스트가 정규식에 부합하지않음 (' || :checkText || ')' AS MESSAGE
FROM DUAL
WHERE NOT REGEXP_LIKE(:checkText, '^[0-9]{1}')
예제2)
첫번째 문자가 영소/대문자 또는 숫자만 NOT REGEXP_LIKE(:checkText, '^[ a-zA-Z0-9 ]{1}')
SELECT
'체크하는 텍스트가 정규식에 부합하지않음 (' || :checkText || ')' AS MESSAGE
FROM DUAL
WHERE NOT REGEXP_LIKE(:checkText, '^[ a-zA-Z0-9 ]{1}')
예제3)
첫번째 문자가 영소/대문자 또는 숫자만 ,
2번째는 숫자, 영소/대문자 또는 숫자만,
3번째는 끝에서 4~6번째 문자가 숫자만 될 때
NOT REGEXP_LIKE(: checkText , '^[0-9a-zA-Z]{1}[0-9]{1}[0-9a-zA-Z]{1}[0-9]{3}$')
SELECT
'체크하는 텍스트가 정규식에 부합하지않음 (' || :checkText || ')' AS MESSAGE
FROM DUAL
WHERE NOT REGEXP_LIKE(:checkText , '^[0-9a-zA-Z]{1}[0-9]{1}[0-9a-zA-Z]{1}[0-9]{3}$')
--ex) 123456, A12345, 11A1234 ⇒ OK /
--ex) 11111(문자갯수 부족), 1A2345(2번째가 숫자가 아님), 123A45(3번째가 숫자가아님) ⇒ NG