블로그 프로필 이미지





정규 표현식(regular expression)


정규 표현식은 문자열의 집합에서 하나의 규칙을 표현할때 사용한다. PHP뿐만 아니라, 다른 프로그램에서도 정규 표현식은 사용이 된다. 한가지 예를 들면 웹서버의 .htaccess 파일을 통해 웹으로 들어오는 주소들을 관리할때또 정규 표현식을 사용한다.


처음은 정규 표현식이 다소 낯설고 어렵게 다가올 수 있으나, 알면알 수록 어렵다... 하지만 정규 표현식은 많이 알 수록, 정말 유용하게 사용되기 때문에, 잘 알지는 못하더라도, 유용힌 정규 표현식은 꼭 메모해 두는게 좋다. 


정규 표현식은 PHP 함수에서 인자값으로 패턴 형식을 받는 함수에 적용할 수 있다. 이러한 함수중 두가지를 예로 든다면 preg_match 함수와 와 ereg 함수가 있다. 이 두함수는 정규 표현식의 규칙에 의해 문자값을 걸러낸다. 이러한 함수들을 정규 표현식 함수 라고 한다.


물론 정규 표현식 함수를 사용하여 정규 표현식 규칙이 아닌 순수 문자 또는 문자열 값을 규칙으로 줄 수도 있다. 하지만, 이러한 경우에는 거의 사용하지 않고, 주로 특정한 패턴을 가진 문자열을 검사할 때 사용한다.


 정규 표현식에서 사용되는 규칙과 설명 


규칙 

설명 

^

 문자열의 시작

$

 문자열의 마지막

.

 문자열중 임의 의 한문자

+

 + 앞에 있는 문자가 최소 1번 이상 나올때

*

 * 앞에 있는 문자가 반복되는 경우 (문자가 없을 경우도 있다.)

?

 ? 앞에 하나의 문자 (문자가 없을 경우도 있다)

[ ]

 [ ] 안에 있는 문자열 중 한 문자

{ }

 { } 앞에 있는 문자 또는 문자열의 개수

( )

 ( ) 안에 있는 글자들의 그룹화

|

 OR 연산자의 기능

[a-z]

 알파벳 소문자중 한문자

[A-Z]

 알파벳 대문자중 한문자

[0-9]

 숫자 중 한문자

[[:digit:]]

 숫자 중 한문자 ([0-9] 규칙과 같다)

[a-zA-Z]

 알파벳 대문자 또는 소문자중 한문자

[[:alpha:]]

 알파벳 대문자 또는 소문자중 한문자 ([a-zA-Z] 규칙과 같다)

[a-Z0-9]

 알파벳 대문자 또는 소문자 또는 숫자 중에 한문자

[[:alnum:]]

 알파벳 대문자 또는 소문자 또는 숫자 중에 한문자 ([a-Z0-9] 규칙과 같다)

[[:space:]]

 공백문자가 하나라도 있을 시.

[[:punct:]]

 구두점 기호가 하나라도 있을 시.


 참고 자료 : PHP 프로그래밍 책 


앞에서도 말했겠지만, 정규 표현식 하나만 잘 다루어도 큰 인정을 받을 수 있다. 그이유는 특수화된 엄격한 문자열을 검사할 시 정규 표현식 을 잘다룬다면, 기능면이나, 속도면에서 큰 이득을 볼 수 있고 또한 정규 표현식의 사용범위가 다방면이기 때문에 여러 환경에서 적용이 가능하기 때문이다.


정규 표현식은 규칙을 알고 있어도, 이 규칙을 통해 하나의 패턴을 정하는게 정말 어렵다. 그래서 인지, 늘 정규 표현식을 마스터 할려고 마음 먹어도 좀처럼 다가가기가 쉽지 않다. 나같은 경우 정규 표현식 함수를 사용할때 아직까지도 누군가가 만들어 놓은 정규 표현식을 가져와서 사용하는게 습관이 되버렸다.


다른함수같은건 직접 만들어서 사용하지만, 정규 표현식은 만들 엄두가 안난다... 암튼 시간이 정말 남아돌때, 그 시간을 이용하여 정규 표현식을 마스터 해볼까 한다.

댓글
(비회원은 자신의 글을 볼 수 없습니다.)