* 정규표현식(REGEXP)란?

오라클 10g 이상에서 사용가능한 REGEXP(Regular Expression ) 함수는

정규표현식이라고 하며 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어입니다.

문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 검색하거나 치환하는 과정을 처리해줍니다.

* 정규표현식 사용하는 이유

많은 양의 데이터에서 어떤 조건으로 검색을 하거나 특정문자의 값을 변환할 때 사용하게 됩니다.

패턴(정규표현식)을 개별적으로도 사용가능하지만, 혼합해서 사용하여 효과적으로 값을 변환 및 검색가능합니다.

또한 회원가입시에 패스워드조합이나 이메일형식을 규칙적으로 받기위해서 사용도 많이 됩니다.

조건문을 사용하여 문자열을 검열할수도 있지만 정규표현식으로 간단히 회원가입정보를 검열할 수 있습니다.

REGEXP 함수의 종류로 각 문법의 설명입니다.

* REGEXP_LIKE : LIKE 연산과 비슷하며 정규식 패턴을 검색합니다.

* REGEXP_REPLACE : 정규 표현식을 대상으로 다른 문자로 대체합니다.

* REGEXP_INSTR : 문자열을 검색하고 일치항목의 위치를 반환합니다.

* REGEXP_SUBSTR : 정규식 패턴과 일치하는 문자열을 반환합니다.

* REGEXP_COUNT : 정규식 패턴을 검색하여 발견된 횟수를 반환합니다.

(11버전 이상 사용가능)

이론만 보았을 때는 뭔가 비슷비슷해서 헷갈릴 수 있으니 아래 설명과 예제를 보시면 이해하기 쉽습니다.

 

먼저, 정규표현식 패턴은 매우 다양하므로 자주 사용되는 패턴을 어느정도 정리한 표입니다.

-------------------------------------------------------------------------------------------------------------------------------------------

* REGEXP_LIKE( string, patter [,matching parameter ] )

* REGEXP_LIKE( 문자열, 정규식패턴, [매칭 매개변수])

- string : 소스 문자열

- pattern : 특정 문자를 다양한 pattern으로 검색하는 것이 가능

- matching parameter : 매치 할떄의 옵션, 대소문자 구분 등

34로 시작하며 뒤에 A또는 B가 오는 글자를 검색했습니다.

-----------------------------------------------------------------------------------------------------------------------------------------------------

* REGEXP_REPLACE( string, pattern [, repacement_string [, start_position [, nth_appearance [, matching parameter ] ] ] ] )

* REGEXP_REPLACE( 문자열, 정규식패턴 [, 대체문자열 [, 시작위치 [, 일치횟수 [, 매칭 매개변수] ] ] ] )

- string : 문자열

- patter : 정규식패턴

- replacement_string : 변환하고자 하는 형태

- start_position : 검색시작위치를 지정 ( 기본값 1)

- nth_appearance : n번째 일치된 문자열 (기본값 0)

- matching parameter : 매칭 매개변수

 

숫자로 된 값을 #으로 바꾸는 정규식

start_position 은 어디서부터 검색할건지를 정하는 변수입니다 1로 입력했을시 맨앞글자인 '대' 부터 스캔합니다

2로 입력하면 '한' 부터 시작합니다.

nth_appearance 는 몇번째 검색된 문자를 처리할지를 확인하는 변수입니다.

위 문구에서 숫자값은 1,2,3인데 0을 입력하면 1과2,3 전부 #으로 바꾸라는 뜻이고 1을 입력할시 1A2B3C중 1만 #으로 바꾼다는 뜻이됩니다.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

* REGEXP_INSTR ( string, patter [, start_position [, nth_appearance [, return_option [, matching parameter ] ] ] ] )

* REGEXP_INSTR ( 문자열, 정규식패턴 [, 시작위치 [, 일치횟수 [, 반환할 문자위치 [, 매칭 파라미터 ] ] ] ] )

- string : 문자열

- pattern : 정규표현식

- start_position : 검색시작위치(기본값 1)

- return_option : 발생값의 첫번째 위치를 반환(기본값 1)

- matcing parameter : 매칭 매개변수

 

안녕하세요 중 '녕' 의 문자가 몇번째에 있는지 반환하는 기능입니다.

앞에서 2번째로 있으니 2를 반환합니다.

-------------------------------------------------------------------------------------------------------------------------------------------------------------

* REGEXP_SUBSTR ( string, patter [,start_position [, nth_appearance [, match_parameter ] ] ] )

* REGEXP_SUBSTR ( 문자열, 정규식패턴 [, 시작위치 [, 일치횟수 [, 매칭파라비터 ] ] ] )

- string : 문자열

- pattern : 정규표현식

- start_position : 검색시작위치 (기본값1)

- nth_appearance : 몇번째 일치된 문자열 대체 (기본값0)

- matching parameter : 매칭 매개변수

------------------------------------------------------------------------------------------------------------------------------------------------------

* REGEXP_COUNT( string, pattern [, start_position [, nth_appearance [, match parameter ] ] ] )

* REGEXP_COUNT ( 문자열, 정규식패턴 [, 시작위치 [, 일치횟수 [, 매칭파라미터 ] ] ] )

​​

 

'123' 이 몇번 나오는지 출력하는 문구입니다.

 

정규표현식 . 은 모든문자를 말합니다.

문자가 몇번 나오는지 출력하는 문구입니다. 띄어쓰기도 포함하여 출력합니다.

---------------------------------------------------------------------------------------------------------------------------------------

여기까지 정규표현식 6가지에 대해서 설명 및 예제문제를 보여드렸습니다.

정규표현식 패턴을 보면서 직접 코드를 처보시면 습득이 쉬울거라고 생각합니다.

[, ] [, ] 등 괄호로 묶인 곳은 생략가능한 부분입니다.

긴글 읽어주셔서 감사합니다.

LIST

+ Recent posts