'정규표현식'에 해당되는 글 1건

정규표현식의 패턴



프로그램을 하다보면, 정규표현식(정규식)을 사용해야 할 경우가 종종 발생하고는 합니다.


예를들자면, 회원가입시 이메일 주소가 올바른 형태인지 검사한다던지  긴 문자열 중에서 특정한 부분만을 뽑아낸다던지...


이런 상황에서 사용을 하게 되지요.


정규표현식 이라 함은  말그대로 문자열 내의 특정한 규칙을 의미하는 말입니다.  이를 패턴이라고 하기도 하지요.


다음은 정규표현식에서 사용하는 패턴에 사용되는 기호들 입니다.



표현식

 설명 

 ^

 문자열의 시작

 문자열의 종료

 .

 임의의 한 문자 (문자의 종류 가리지 않음)

 단, \ 는 넣을 수 없음

 *

 앞 문자가 없을 수도 무한정 많을 수도 있음

 앞 문자가 하나 이상

 앞 문자가 없거나 하나있음

 []

 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다.

 {}

 횟수 또는 범위를 나타낸다.

 ()

 소괄호 안의 문자를 하나의 문자로 인식 

 |

 패턴 안에서 or 연산을 수행할 때 사용

 \s

 공백 문자

 \S

 공백 문자가 아닌 나머지 문자

 \w

 알파벳이나 숫자

\W 

 알파벳이나 숫자를 제외한 문자

\d 

 숫자 [0-9]와 동일

\D 

 숫자를 제외한 모든 문자

 정규표현식 역슬래시(\)는 확장 문자
 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미

(?i) 

 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음


위의 기호들을 이용해서 정규표현식의 패턴을 만들어 내는데요.




다음은 자주쓰이는 패턴들 입니다.




표현식

 설명 

 ^[0-9]*$

 숫자만

^[a-zA-Z]*$

 영문자만

 ^[가-힣]*$

 한글만

 ^[a-zA-Z0-9]*$

 영어와 한글만

^[a-zA-Z0-9]+@[a-zA-Z0-9]+$

 이메일 주소 형태인지

^01(?:0|1|[6-9])-(?:\d{3}\d{4})-\d{4}$

 휴대폰번호 검사



위와같은 표현식들을 각각의 언어에 맞추어 검사 또는 치환/추출 을 하실 수 있습니다


PHP 의 경우 preg_match() 함수를 이용해서 패턴에 일치하는 구문이 있는지 확인할 수 있겠지요..


다음은  특정한 문자열에서 정규식에 해당하는 부분이 있는지 확인하는 예제입니다.


<?php
// 패턴 구분자 뒤의 "i"는 대소문자를 구별하지 않게 합니다.
if (preg_match("/php/i""PHP is the web scripting language of choice.")) {
    echo 
"발견하였습니다.";
} else {
    echo 
"발견하지 못했습니다.";
}
?>


[php.net 에서 발췌]


이와 같은 형태로 javascript 나 기타 다른언어에서도 두루두루 활용할 수 있습니다.


오늘은.. 간단한 정규표현식 패턴에 대해서 적어보았습니다.



블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,