포켓인포
테크 가이드

정규식(Regex) 기초와 자주 쓰는 패턴

정규식 메타문자(. * + ? ^ $ [] () \d \w \s)와 g·i·m 플래그, 그리디 vs 게으른 매칭을 예제와 함께 정리했습니다. 정규식 테스터로 패턴을 바로 검증해 보세요.

로그에서 숫자만 뽑거나, 입력값 형식을 검증하거나, 특정 패턴을 한 번에 치환할 때 정규식만큼 강력한 도구는 없습니다. 처음엔 기호가 낯설지만 핵심 메타문자 몇 개만 익히면 금세 쓸 수 있습니다. 정규식의 기초 문법과 자주 쓰는 패턴을 정리하고 정규식 테스터로 직접 검증하는 방법을 알아봅니다.

한눈에 보기

  • 정규식은 문자열의 패턴을 표현하는 표기법입니다.
  • 메타문자: . 임의 한 문자, * 0회 이상, + 1회 이상, ? 0~1회, ^/$ 시작/끝, [] 문자 집합, () 그룹.
  • 문자 클래스: \d 숫자, \w 단어문자, \s 공백.
  • 플래그: g 전역, i 대소문자 무시, m 여러 줄.
  • 그리디(최대 매칭)와 게으른(*?, 최소 매칭)의 차이를 이해하세요. 정규식 테스터로 바로 확인할 수 있습니다.

핵심 메타문자

정규식의 기본은 특별한 의미를 가진 문자, 즉 메타문자입니다.

기호의미
.임의의 한 문자
*앞 패턴이 0회 이상 반복
+앞 패턴이 1회 이상 반복
?앞 패턴이 0~1회 (있어도 되고 없어도 됨)
^문자열(또는 줄)의 시작
$문자열(또는 줄)의 끝
[]문자 집합 (예: [abc] 는 a, b, c 중 하나)
()그룹으로 묶기

예를 들어 a.c 는 가운데에 어떤 한 문자가 와도 매칭되므로 abc, axc 모두 잡힙니다. ^HelloHello 로 시작하는 줄을, end$end 로 끝나는 줄을 의미합니다.

문자 클래스

자주 쓰는 문자 묶음에는 짧은 표기가 준비되어 있습니다.

표기의미
\d숫자(digit) 한 글자
\w단어문자(영문자·숫자·밑줄) 한 글자
\s공백 문자(스페이스·탭·줄바꿈) 한 글자

이들을 반복 기호와 조합하면 강력해집니다. \d+ 는 숫자 한 자리 이상, \s+ 는 공백 한 칸 이상을 뜻합니다.

플래그

같은 패턴이라도 플래그에 따라 동작이 달라집니다.

  • g(전역): 첫 매칭에서 멈추지 않고 모든 매칭을 찾습니다.
  • i(대소문자 무시): Aa 를 구분하지 않습니다.
  • m(여러 줄): ^$ 가 전체 문자열이 아니라 각 줄의 시작·끝에 매칭됩니다.

그리디 vs 게으른 매칭

*+ 는 기본적으로 그리디(greedy), 즉 가능한 한 길게 매칭하려 합니다. 반대로 뒤에 ? 를 붙인 *?, +?게으른(lazy) 매칭으로 가능한 한 짧게 잡습니다.

예를 들어 <a><b> 라는 문자열에서 <.*> 는 그리디라 전체 <a><b> 를 한 번에 잡지만, <.*?> 는 게으르게 동작해 <a> 만 잡습니다. 이 차이는 HTML 태그나 따옴표 안 내용을 다룰 때 특히 중요합니다.

자주 쓰는 패턴 예시

목적패턴설명
숫자 추출\d+한 자리 이상의 숫자 묶음
공백으로 분리\s+연속된 공백을 한 덩어리로
단어문자만\w+영문자·숫자·밑줄의 연속

이런 패턴은 정규식 테스터에 샘플 텍스트와 함께 넣어 보면 어떤 부분이 매칭되는지 한눈에 볼 수 있습니다.

자주 묻는 질문

*+ 의 차이는 무엇인가요?

* 는 0회 이상이라 아예 없어도 매칭되고, + 는 1회 이상이라 최소 한 번은 나와야 매칭됩니다.

대소문자를 구분하지 않으려면?

i 플래그를 사용하면 됩니다. 예를 들어 helloi 를 적용하면 Hello, HELLO 도 매칭됩니다.

왜 패턴이 예상보다 길게 잡히나요?

*·+ 가 기본적으로 그리디라 최대한 길게 매칭하기 때문입니다. 짧게 잡고 싶다면 *?·+? 같은 게으른 형태를 쓰세요.

숫자만 뽑아내려면 어떤 패턴을 쓰나요?

\d+ 를 전역 플래그 g 와 함께 사용하면 문자열 속 모든 숫자 묶음을 추출할 수 있습니다.

마무리

정규식은 메타문자, 문자 클래스, 플래그, 그리고 그리디·게으른 매칭이라는 몇 가지 개념만 잡으면 빠르게 익숙해집니다. \d+, \s+ 같은 기본 패턴부터 손에 익히는 것이 좋습니다. 패턴을 만들었다면 정규식 테스터에 텍스트를 넣어 의도대로 매칭되는지 꼭 확인해 보세요.

#정규식#Regex#개발#문자열#패턴

🧰 관련 도구

관련 글