복잡한 문자열의 지도로 불리는 '정규 표현식(Regex)' 완벽 정리

정규 표현식(Regular Expression, Regex)은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어입니다. 방대한 텍스트에서 이메일 주소만 뽑아내거나, 비밀번호가 규칙에 맞는지 검사할 때 필수적인 도구입니다. 처음에는 암호처럼 보이지만, 기본 기호를 익히면 놀라운 효율성을 발휘합니다.




1. 기본 메타 문자: 정규식의 알파벳

가장 자주 쓰이는 기본적인 기호들입니다. 이 기호들만 조합해도 기본적인 검색이 가능합니다.

기호 설명 예시
. 임의의 한 문자 (모든 문자) a.b -> a와 b 사이에 아무 문자나 있는 경우 (axb, a1b)
^ 문장의 시작 ^Hello -> Hello로 시작하는 문장
$ 문장의 끝 done$-> done으로 끝나는 문장



2. 문자 클래스와 범위 선택

대괄호 []를 사용하면 특정 범위의 문자를 지정할 수 있어 활용도가 매우 높습니다.

  • [abc]: a, b, c 중 하나라도 포함된 경우
  • [a-z]: 모든 소문자 알파벳
  • [0-9]: 모든 숫자
  • [^0-9]: 숫자가 아닌 것 (대괄호 안의 ^는 '반대'를 의미)
  • \d: 숫자와 동일 [0-9]
  • \D: 숫자가 아닌 것과 동일 [^0-9]
  • \w: 알파벳 + 숫자 + 언더바(_)와 동일 [a-zA-Z0-9_]
  • \s: 공백 문자 (스페이스, 탭 등)



3. 수량 결정자: 반복 횟수 지정하기

중괄호 {}를 사용하면 정확히 몇 번 반복될지를 지정할 수 있어 데이터 검증에 유용합니다.

기호 설명 예시
{n} 정확히 n번 반복 \d{3} -> 숫자 3자리 (123, 456 등)
{n,} n번 이상 반복 \w{5,} -> 문자가 5자 이상인 경우
{n, m} n번부터 m번까지 반복 \d{2,3} -> 숫자가 2자리 또는 3자리



4. 실전 활용 예시: 자주 쓰는 정규식 패턴

실제로 우리가 마주하는 복잡한 데이터 형식들을 정규식으로 표현하면 다음과 같습니다.

  • 전화번호 패턴 (010-1234-5678): ^\d{3}-\d{3,4}-\d{4}$
  • 해석: 시작은 숫자 3개, 중간은 하이픈 후 숫자 3~4개, 끝은 하이픈 후 숫자 4개.
  • 이메일 주소 패턴: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 해석: 아이디 부분(문자/숫자 등) + @ + 도메인 이름 + . + 도메인 확장자(2자 이상).
  • 아이디 규칙 (영문+숫자 5~12자): ^[a-zA-Z0-9]{5,12}$



정규식 공부를 위한 팁

정규식은 눈으로만 보는 것보다 직접 테스트해보는 것이 가장 빠릅니다.

  • Regex101 활용: 웹사이트(regex101.com)를 이용하면 내가 쓴 정규식이 어떤 문자열을 잡아내는지 실시간으로 확인할 수 있고, 각 기호의 의미를 친절하게 설명해 줍니다.
  • 역슬래시()의 사용: 만약 점(.) 자체나 물음표(?) 자체를 찾고 싶다면 기호 앞에 \를 붙여서 \. 또는 \?라고 써야 합니다. 이를 '이스케이프(Escape)'라고 부릅니다.