코딩?

정규표현식 정리 + 예제

km1n 2022. 1. 3. 11:16

프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 패턴에 맞는 문자열을 검색할 때 사용한다. 정규식이라고도 부르며,보통 regex 혹은 regexp라 많이 쓴다.

 

정규표현식에서 일정한 의미를 가지고 쓰는 특수문자를 메타 문자라고 부른다.

 

예를 들어 'ip(hone|ad)'라는 정규식에서 '(', '|', ')'이 메타 문자다. 이런 정규 표현식은 iphone, ipad라는 문자열과 매치된다. 여기에 쓰이는 글자가 포함된 패턴을 넣으려면 해당 글자 앞에 \를 넣어줘야 한다.

 

^x-문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다. 예>  '^1'은 첫 글자가 1로 시작하는 줄을 찾는다
x$-문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다. 예> '{4}원$'은 쉼표 뒤에 임의의 문자 4개가 이어지고 '원'이 나온 뒤 종료되는 줄을 찾는다
.x-임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미한다.
x+- 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미한다.
x?-존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다.
x*-반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨을 의미한다.
x|y- or 를 표현하며 x 또는 y 문자가 존재함을 의미한다.
(x)-그룹을 표현하며 x 를 그룹으로 처리함을 의미한다.
(x)(y)-그룹들의 집합을 표현하며 앞에서 부터 순서대로 번호를 부여하여 관리하고 x, y 는 각 그룹의 데이터로 관리된다.
(x)(?:y)-그룹들의 집합에 대한 예외를 표현하며 그룹 집합으로 관리되지 않음을 의미한다. 
x{n}- 반복을 표현하며 x 문자가 n번 반복됨을 의미한다.
x{n,}- 반복을 표현하며 x 문자가 n번 이상 반복됨을 의미한다.
x{n,m}- 반복을 표현하며 x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨을 의미한다.

[xy]-문자 선택을 표현하며 x 와 y 중에 하나를 의미한다.
[^xy]-not 을 표현하며  x 및 y 를 제외한 문자를 의미한다.
[x-z]-range를 표현하며 x ~ z 사이의 문자를 의미한다. 
\^-escape 를 표현하며 ^ 를 문자로 사용함을 의미한다.
\b-word boundary를 표현하며 문자와 공백사이의 문자를 의미한다.
\B-non word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미한다.
\d-digit 를 표현하며 숫자를 의미한다. 
\D-non digit 를 표현하며 숫자가 아닌 것을 의미한다. 
\s-space 를 표현하며 공백 문자를 의미한다. 
\S-non space를 표현하며 공백 문자가 아닌 것을 의미한다.
\t-tab 을 표현하며 탭 문자를 의미한다.
\v-vertical tab을 표현하며 수직 탭(?) 문자를 의미한다.
\w-word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미한다. 
\W-non word를 표현하며 알파벳 + 숫자 + _ 가 아닌 문자를 의미한다.
 
g - Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다. 
i-Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미한다.
m-Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미한다. 

 

<<정규표현식 예제>>

 

개별 숫자 - /[0-9]/g

전체에서  0~9사이에 아무 숫자 '하나'  찾음 

개발 문자 - /[to]/g

전체에서 t  혹은 o  를 모두 찾음 

단어 - /filter/g

전체에서 'filter' 라는 단어에 매칭되는것을 찾음 

전화번호 - /^\d{3}-\d{3,4}-\d{4}$/

시작을 숫자 3개로 하며 /   중간에 하이픈 -  하나 /  숫자가 3~4개 존재 /  하이픈 하나 /  숫자 4개로 끝남 

핸드폰 번호 - /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/

시작을 숫자 01로 시작하며 그 후에 0,1,6,7,8,9 중에 하나가 나올수도 있으며 /  하이픈 - 하나 존재할수도 있으며 /  숫자 3~4개 이어지고 / 하이픈 - 하나 존재할수도 있으며 /  숫자 4개가 이어짐