[정규표현식(regex)] 정의 및 사용 예시
정규표현식(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 사이트가 가장 좋은것 같다.
댓글남기기