본문 바로가기
리뷰 및 팁

[정규표현식] 정의 및 설정 테스트 방법

by hunihub1 2017. 12. 25.

정규표현식(regular expression) 이란

- 정규 표현식(Regular Expression, RegEx, regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 프로그래밍 언어와 유틸리티에서 텍스트 처리를 위해 사용된다.

 

- 정규 표현식은 특수 문자와 문자열의 조합으로 이루어져 있다. 특수 문자는 정규 표현식에서 특별한 의미를 가지며, 문자열은 정규 표현식에서 매칭해야 하는 문자열이다.

 

- 정규 표현식은 텍스트를 검색, 치환, 추출하는 데 사용할 수 있다. 예를 들어, 정규 표현식을 사용하여 특정 문자열이 포함된 텍스트를 검색하거나, 특정 문자열을 다른 문자열로 치환하거나, 특정 문자열을 추출할 수 있다.

 

- 정규 표현식은 사용하기 어려울 수 있지만, 텍스트를 처리하는 데 매우 강력한 도구가 될 수 있다.

 

메타문자의 정의 및 종류

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

^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     : 스페이스, 탭, 폼 피드, 줄 바꿈 문자를 포함한 하나의 공백문자 [ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​-\u200a​\u2028\u2029\u202f\u205f​\u3000]
\S     : \s가 아닌 모든 문자
\0     : 널 문자(U+0000)
\c     : 컨트롤 문자(e.g. \cM 은 control-M(U+000D)와 일치함)

 

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

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

 

해당 사이트에서 사용한 사례를 소개하면..

 

-  A-Z로 시작하는 문자 검색하는 정규표현식으로 전체문장에서 하이라이트로 표기해주고, 정규표현식 작성시 도움이 되는 문법도 왼쪽에 표기되어 보기 편했다.

- 왼쪽메뉴에있는 문법샘플을 테스트해보고 싶을경우 화살표를 누르면 아래와 같이 복사가 되어 쉽게 테스트 가능함

 

댓글