CS/Programming Language

[프로그래밍 언어론/Programming Language] 정규 표현식(Regex)이란?

binaryroot 2026. 4. 17. 09:02
728x90

정규 표현식을 정리한 글은 굉장히 많지만, 공부한 것을 쉽게 정리해보려고 한다.

 

정규 표현식(Regular Expression)

정규 표현식은 검색에서 문자열을 일치시키는 데 사용되는 특수 문자 패턴을 말한다.

UNIX 환경의 편집기나 각종 유틸리티(grep, sed, awk 등)에서 텍스트를 효율적으로 다루기 위해 필수적인 개념이다.

 

정규 표현식은 메타문자(Metacharacters)라고 불리는 기호들을 조합하여 복잡한 문자열 규칙을 정의하는 것이다.

규칙을 정의한 것인데 사용하는 환경에 따라서 표기법 버전이 다를 수 있어서 사용 전 확인이 불가피하다.

 

우리는 정규 표현식을 쉽게 찾아볼 수 있다.

가장 대표적인 활용 사례는 이메일 검증 정규식이다.

^[a-zA-Z0-9_.±]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$

 

  • ^ : 시작 위치 고정
  • [a-zA-Z0-9_.±]+ : 아이디 부분 (알파벳, 숫자, 일부 특수문자 1회 이상)
  • @ : 반드시 포함되어야 함
  • \. : 실제 마침표 매칭
  • $ : 끝 위치 고정

이러한 구조를 가지고 있으며 해당 내용은 아래에서 더 자세히 알아보자.

 

Metacharacters(메타문자)

 

구분 기호 매칭대상 / 의미
기본 . 줄바꿈 제외 임의의 한 문자
  \ 이스케이프 (특수 문자를 일반 문자로 취급)
위치 ^ / $ 줄의 시작 / 줄의 끝
  < / > 단어의 시작 / 단어의 끝
집합 [abc] 집합 중 한 문자 (a,b,c 중 한 개)
  [^abc] 집합을 에외한 한 문자
  [a-z] 범위 지정 (a부터 z까지 중 하나)
반복 * 0번 이상 반복
  + 1번 이상 반복
  ? 0번 또는 1번 등장
  {m, n} 최소 m번, 최대 n번 반복
기타 | 선택 (OR 연산)
  ( ) 그룹화 및 버퍼 저장

 

정규 표현식의 구성 요소에는 Atom과 Operators 가 있다.

Atom (아톰) : '무엇'을 '어디에' 매칭할 지를 지정하는 기본 단위

Operator (연산자) : 아톰들을 결합하여 더 복잡한 패턴을 만드는 도구

 

아톰의 5가지 종류

아톰은 매칭의 가장 작은 단위로 다음과 같이 분류된다.

  1. 단일 문자(Single Character): 개별 문자와 매칭 (대소문자 구분)
  2. 점(Dot): . 기호를 사용하며, 줄바꿈을 제외한 임의의 한 문자와 매칭
  3. 클래스(Class): [...] 내에 정의된 집합 중 하나와 매칭
  4. 앵커(Anchor): ^, $ 등 위치를 고정하는 기호
  5. 역참조(Back Reference): \n 형식을 사용하여 이전에 저장된 버퍼를 다시 참조
728x90

클래스 아톰 (Class Atom)

다양한 표준에서 미리 정의된 클래스(Short-hand)를 사용하면 더 간결하게 작성 가능하다.

POSIX 클래스 PCRE (단축형) 의미
[:digit:] \d 숫자 ( [0-9] )
[:space:] \s 공백 문자 (탭, 스페이스 등)
[:alnum:] - 알파벳 및 숫자
[:upper:] - 대문자

 

반복 연산자 (Recetition)

반복되는 횟수를 지정할 때 사용하며, 괄호와 함께 쓰면 그룹 단위로 반복도 가능하다.

 

  • BA{3,5}: 'A'가 3~5번 반복됨
  • (BA){3,5}: 'BA' 그룹 자체가 3~5번 반복됨

역참조 (Back Reference)

괄호 ( )로 묶인 그룹은 매칭 시 버퍼에 저장됩니다. 이를 \1부터 \9까지의 번호로 다시 불러와 사용할 수 있기 때문에

반복되는 문구 패턴을 찾을 때 유용하다.

 

추가로 가독성을 높여주는 단축 메타문자에 대해서도 알아보자.

정규 표현식을 작성하다 보면 숫자나 공백 등을 자주 마주하게 된다.

이때 [0-9] 처럼 길게 쓰는 대신에 역슬래시(\)를 활용한 단축 표기법을 사용하면 패턴이 훨씬 간결해진다.

패턴 의미 설명 매칭 범위 (Equivalent)
\d Digit 숫자와 매칭 [0-9]
\D Non-digit 숫자가 아닌 문자와 매칭 [^0-9]
\s Whitespace 공백 문자(스페이스, 탭, 줄 바꿈 등)와 매칭 [ \t\n\r\f\v]
\S Non-whitespace 공백이 아닌 문자와 매칭 [^ \t\n\r\f\v]
\w Word 단어 구성 문자와 매칭 [a-zA-Z0-9_]
\W Non-word 단어 구성 문자가 아닌 것과 매칭 [^a-zA-Z0-9_]

 

 


정규 표현식은 처음에 접하면 이게 뭐야 싶겠지만, 규칙만 잘 이해하면 데이터를 다루는 시간을 크게 줄일 수 있다.

이 글이 정규 표현식을 더 잘 이해할 수 있는 글이 되었길 바란다.

728x90