정규 표현식(Regex)은 특정 패턴을 가진 문자열을 찾거나, 변경하는데 사용할 수 있는 일종의 문법입니다. 예를 들어, 이메일 주소 형식이나, 전화번호 형식, IP 형식과 같은 특정 규칙을 가진 문자열을 찾을 때 정규 표현식을 사용할 경우 매우 간단하게 특정 패턴을 매칭시켜 특정 문자열을 찾을 수 있습니다.
정규 표현식 기본 문법
정규 표현식은 아래와 같은 몇 가지 기본 문법만 익히면 금방 사용할 수 있습니다.
패턴 그대로 매칭하는 경우 : 찾고 싶은 단어 또는 문자열을 그대로 입력합니다. 예를 들면 "사과"라는 패턴은 특정 문자열에서 "사과"를 찾아낼 수 있습니다.
메타 문자 및 수량 한정자를 사용하는 경우 : 메타 문자는 특별한 의미를 가지며, 특정 문자 집합이나 문자열의 반복 횟수를 나타냅니다. 예를 들어 '\d+' 는 하나이 이상의 숫자, 'a{3}' 은 'a' 가 연속으로 세 번 반복됨을 의미합니다.
그룹 및 전방/후방 탐색 : 괄호를 사용해 패턴의 일부를 그룹화하거나 특정 패턴 전후에 문자열이 존재하는 지 확인할 수 있습니다. 예를 들어 '(ab)+c' 패턴은 "ab" 뒤에 "c"가 하나 이상 반복되는 문자열과 매칭됩니다.
정규 표현식 메타 문자
메타 문자
의미
예제
설명
^
문자열의 시작
^hello
"hello"로 시작하는 문자열
$
문자열의 끝
world$
"world"로 끝나는 문자열
\b
단어 경계 (단어 시작이나 끝)
\bcat\b
"cat"이라는 단어만 매칭 (catnip, category는 매칭되지 않음)
\B
단어 경계가 아닌 곳
cat\B
"category", "catnip" 등 "cat"이 단어의 일부로 포함된 경우 매칭
\s
공백 문자 (탭, 줄바꿈 등)
\sworld
공백 뒤에 "world"가 오는 문자열
\S
공백 문자가 아닌 문자
\Shello
공백이 아닌 문자 뒤에 "hello"가 오는 문자열
\d
숫자
\d{3}
세 자리 숫자
\D
숫자가 아닌 문자
\D+
숫자가 아닌 문자열
\w
단어 문자 (알파벳, 숫자, 언더스코어)
\w+
단어 (예: hello, world123)
\W
단어 문자가 아닌 문자
\W+
단어가 아닌 문자열 (예: !@#$%)
.
임의의 한 문자 (줄바꿈 문자 제외)
a.c
"abc", "aec", "a c" 등 a와 c 사이에 임의의 한 문자가 있는 문자열
\
정규식 상의 특별한 의미를 가지는 문자들을 해당 문자 그대로 사용하고자 할 때 사용하는 문자
\^
“^” 문자 그대로를 의미
[]
문자 집합 (대괄호 안의 문자 중 하나)
[abc]
"a", "b", "c" 중 하나
[^]
부정 문자 집합 (대괄호 안의 문자를 제외한 문자 중 하나)
[^abc]
"a", "b", "c"를 제외한 모든 문자
정규 표현식 수량 한정자
수량 한정자
의미
예제
설명
?
0회 또는 1회 반복
colou?r
"color" 또는 "colour"
*
0회 이상 반복
\d*
숫자가 0개 이상인 문자열
+
1회 이상 반복
\w+
단어 문자가 1개 이상인 문자열
{n}
n회 반복
\d{4}
네 자리 숫자
{n,m}
n회 이상 m회 이하 반복
\w{3,5}
단어 문자가 3개 이상 5개 이하인 문자열
정규 표현식 그룹 및 전/후방 탐색
패턴
의미
예제
설명
그룹
패턴의 일부를 그룹화
(ab)+
"ab"가 하나 이상 반복되는 문자열과 일치
전방 탐색
특정 패턴 뒤에 오는 문자열 확인
hello(?=world)
"hello"뒤에 "world"가 오는 문자열 매칭
후방 탐색
특정 패턴 앞에 오는 문자열 확인
(?<=hello)world
"hello"가 앞에 있는 "world"와 일치
정규 표현식 사용 예제
이메일 주소 검증 : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$