정규표현식(regular expression) 이란

정규 표현식은 특정 패턴의 문자열을 매칭하기 위해 사용되는 문자열로, 문자열을 검색하고 추출하는 데 사용된다.
예를 들어, 이메일 주소, 전화번호, 우편번호, URL 등과 같은 특정 패턴을 찾을 때 사용할 수 있다.  정규표현식인 여러 종류의 메타문자를 포함하고 있다.

메타문자의 정의 및 종류

- 메타문자는 문자를 표현하는 것 이외에 특정한 규칙을 표현하기 위한 문자들로 자주사용하는 문자는 다음과 같다.

^x     : 입력(줄) 시작 + x  
x$     :  x + 입력(줄) 끝  
\Ax    : 문자열의 시작(내부 줄바꿈 제외) + x  
x\z    : x + 문자열의 끝(내부 줄바꿈 제외)  
.      : 개행 문자를 제외한 임의의 문자 1개  
x{n}   : x가 n번 반복  
x{n,}  : x가 n번 이상 반복  
x{n,m} : x가 n번 이상 m번 이하 반복  
x?     : 문자 x 또는 문자 없음(x{0,1})  
x+     :  x가 1번 이상 반복(x{1,})  
x*     : x 가 0번 이상 반복(x{0,})  
x|y    : x 또는 y  
(x)    : ()안의 내용을 캡쳐하여 그룹화 (레퍼런스 캡쳐 관련하여 Ref.2를 참조바람)  
(x)(y) : ()안의 내용을 캡처하며 앞에서부터 그룹 번호를 부여함.  
(?:y)  : 캡쳐하지 않는 그룹을 생성  
\n     : (n은 1에서 9까지의 정수 [1-9])정규식 안 n번 괄호(그룹)의 최근 일치 부분(역참조)과 같음.  
x(?=y) : y가 뒤 따라오는 x에만 일치  
x(?!y) : y가 뒤 따라오지 않는 x에만 일치  
[...]  : Bracket expression이며 가능한 문자셋을 표시한다.(자세한 내용에 대해서는 후술)  
\A     : 문자열의 시작(내부 줄바꿈 제외)  
\z     : 문자열의 끝(내부 줄바꿈 제외)  
\w     : '_'를 포함한 알파벳 또는 숫자 [A-Za-z0-9_]  
\W     : 비 단어문자 [^A-Za-z0-9_]  
\b     : 길이가 0인 단어의 경계를 의미 즉, 매칭되는 결과물에는 경계가 포함되지 않는다(^\w | \w$ | \W\w | \w\W) (Ref.3)  
\B     : 단어의 경계가 아닌 것.  
\d     : 숫자 문자 [0-9]  
\D     : 숫자 문자가 아닌 것 [^0-9]  
\xhh   : hh(hex문자 2개)  
\uhhhh : hhhh(hex문자 4개)  
\f     : 폼 피드(U+000C)  
\n     : 줄 바꿈(U+000A)  
\r     : 캐리지 리턴(U+000D)  
\t     : 탭(U+0009)  
\v     : 수직 탭(U+000B)  
\s     : 스페이스, 탭, 폼 피드, 줄 바꿈 문자를 포함한 하나의 공백문자
\S     : \s가 아닌 모든 문자  
\0     : 널 문자(U+0000)  

정규표현식 사용 예시

- 자주 사용하는 것은 검색등을 통해 정리해놓고, 필요할때 바로 활용하는 것을 추천한다.

gray|grey	:  contains {gray, grey}
gr(a|e)y	:  contains {gray, grey}
gr[ae]y	:  contains {gray, grey}
b[aeiou]bble	:  contains {babble, bebble, bibble, bobble, bubble}
[b-chm-pP]at|ot	:  contains {bat, cat, hat, mat, nat, oat, pat, Pat, ot}
colou?r	:  contains {color, colour}
rege(x(es)?|xps?)	:  contains {regex, regexes, regexp, regexps}
go*gle	:  contains {ggle, gogle, google, gooogle, goooogle, ...}
\d	:  contains {0,1,2,3,4,5,6,7,8,9}
\d{5}(-\d{4})?	:  contains a United States zip code
1\d{10}	:  contains an 11-digit string starting with a 1
[2-9]|[12]\d|3[0-6]	:  contains an integer in the range 2..36 inclusive
^[0-9]  : 0~9까지 숫자만 
^dog	:  begins with "dog"
dog$	:  ends with "dog"
^dog$	:  is exactly "dog
^[가-힣]    : [ 가나다라 … ] 한글만 가능 
^[가-힣\s]  : [ 가나다라 … ] 한글,띄어쓰기만 가능
^[a-zA-Z]   : 영문만 가능
^[a-zA-Z\s]  : 영문,띄어쓰기만 가능 
^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}  : 전화번호 형태 000-0000-0000
^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)   :도메인 형태, http:// https:// 꼭 포함
^[가-힣a-zA-Z]  : 한글과 영문만 가능
^[a-zA-Z0-9]   : 숫자,알파벳만 가능

문법 테스트 사이트 소개 및 사용기

정규표현식을 눈으로 검증하긴 쉽지 않다. 온라인상에서 쉽게 검증할 수 있는 사이트는 여러가지가 있지만 regexr.com 사이트가 가장 좋은것 같다.

태그: ,

카테고리:

업데이트:

댓글남기기