Table of Contents

Regular Expressions

정규표현식은 특정 문자열을 가리키는 패턴이다. 즉 이 패턴으로 원하는 문자열을 찾는다. - 켄 톰슨

기본 패턴 찾기

정규표현식의 메타 문자
메타 문자 이름 코드 포인트 의미
. U+002E 임의의 문자를 찾음
\ 역슬래시 U+005C 문자의 특수 의미를 없앰
| 세로줄 U+007C 선택
^ 악센트 기호 U+005E 행의 시작을 나타내는 앵커
$ 달러 기호 U+0024 행의 끝을 나타내는 앵커
? 물음표 U+003F 0번 또는 한 번을 나타내는 수량자
* 별표 U+002A 0번 이상을 나타내는 수량자
+ 덧셈 기호 U+002B 한 번 이상을 나타내는 수량자
[ 왼쪽 대괄호 U+005B 문자 클래스 시작
] 오른쪽 대괄호 U+005D 문자 클래스 끝
{ 왼쪽 중괄호 U+007B 수량자 또는 블록 시작
} 오른쪽 중괄호 U+007D 수량자 또는 블록 끝
( 왼쪽 소괄호 U+0028 그룹 시작
) 오른쪽 소괄호 U+0029 그룹 끝

숫자

숫자가 아닌 문자

단축 문자1)
단축문자 설명
\a 벨 문자
[\b] 백스페이스 문자
\c x 제어 문자
\d 숫자
\D 숫자가 아닌 문자
\d xxx 문자의 10진수 값
\f 폼 피드 문자
\h 수평 공백
\H 수평 공백이 아닌 문자
\r 캐리지 리턴
\n 개행 문자
\0xxx 문자의 8진수 값
\s 공백 문자
\S 공백이 아닌 문자
\t 수평 탭 문자
\v 수직 탭 문자
\V 수직 탭이 아닌 문자
\w 영문자, 숫자, _, 기타 스크립트 문자
\W 영문자, 숫자, _, 기타 스크립트 문자를 제외한 문자
\0 널 문자
\x xx 문자의 16진수 값
\u xxx 문자의 유니코드 값

공백

임의의 문자

참조 그룹

경계

선택, 그룹, 역참조

정규표현식 옵션3)
옵션 설명 지원
(?d) 유닉스 행 자바
(?i) 대소문자 구분 없앰 PCRE, Perl, 자바
(iJ) 이름 반복 허용 PCRE*
(?m) 다중 행 PCRE, Perl, 자바
(?s) 한 행(dotall) PCRE, Perl, 자바
(?u) 유니코드 자바
(?U) 욕심쟁이 모드 해제 PCRE
(?x) 공백과 코멘트는 무시 PCRE, Perl, 자바
(?-…) 옵션 기능 제거 PCRE
Perl 변경자(플래그)4)
변경자 설명
a \d, \s, \w 및 ASCII 범위 내의 POSIX 문자
c 찾기 실패 후 현재 위치 유지
d 현재 플랫폼의 기본 설정 사용
g global 모드 설정
i 대소문자 구분 없앰
l 현재 로케일 설정 사용
m 다중 행 문자열
p 찾은 문자열을 저장
s 문자열을 한 행으로 간주
u 유니코드 규칙 사용
x 공백과 코멘트 무시
그룹 이름 지정 구문
구문 설명
(?<name>…) 그룹 이름 지정
(?name…) 또 다른 그룹 이름 지정
(?P<name>…) 파이썬에서 그룹 이름 지정
\k<name> Perl에서 이름으로 참조
\k'name' Perl에서 이름으로 참조
\g{name} Perl에서 이름으로 참조
\k{name} .NET에서 이름으로 참조
(?P=name) 파이썬에서 이름으로 참조

문자 클래스

POSIX 문자 클래스

POSIX 문자 클래스
문자 클래스 설명
[[:alnum:]] 영문자와 숫자
[[:alpha:]] 알파벳 문자(영문자)
[[:ascii:]] ASCII 문자(모두 128)
[[:blank:]] 빈 문자
[[:ctrl:]] 제어 문자
[[:digit:]] 숫자
[[:graph:]] 그래픽 문자
[[:lower:]] 소문자
[[:print:]] 인쇄 가능한 문자
[[:punct:]] 구두점 문자
[[:space:]] 공백 문자
[[:upper:]] 대문자
[[:word:]] 단어
[[:xdigit:]] 16진수

유니코드와 기타 문자

수량자

기본 수량자
구문 설명
? 0 또는 하나
+ 하나 이상
* 0 또는 그 이상
게으른 수량자
구문 설명
?? 게으르게 0번 또는 한 번
+? 게으르게 한 번 이상
*? 게으르게 0번 이상
{n}? 게으르게 n번
{n.}? 게으르게 n번 이상
{m,n}? 게으르게 m부터 n까지
독정적인 수량자
구문 설명
?+ 독점적으로 0번 또는 한 번
++ 독점적으로 한 번 이상
*+ 독점적으로 0번 이상
{n}+ 독점적으로 n번
{n.}+ 독점적으로 n번 이상
{m,n}+ 독점적으로 m에서 n까지

탐색

자주 쓰는 정규표현식

Tools

프로그램과 라이브러리

On-line

Offline

References

1)
이 외에 더 있음, 정규표현식 엔진에 따라 지원 여부 다양
2)
유닉스에서는 \n(U+0004), 윈도우에서는 \n과\r(U+000D)
3)
서브패턴 이름 지정은 http://www.pcre.org/pcre.txt 참고