Home / AI / AI 용어사전 / 정규표현식(RegEx) — AI가 텍스트에서 패턴을 찾는 수식
TERM
정규표현식(RegEx) — AI가 텍스트에서 패턴을 찾는 수식
On this page
이메일 주소 하나를 검증하는 코드 한 줄. 그 안에 ^[\w\.-]+@[\w\.-]+\.\w{2,}$이라는 기호가 빼곡히 들어차 있다. 이것이 정규표현식이다 — 텍스트에서 원하는 패턴을 찾아내는 수식 언어.
정의
정규표현식(Regular Expression, RegEx)은 특정 패턴을 표현하는 문자열 언어다. 검색, 추출, 치환, 검증 등 텍스트를 다루는 모든 작업에 적용된다. AI 시스템이 데이터를 전처리할 때, 로그 파일에서 오류를 뽑아낼 때, 사용자 입력을 검증할 때 — 정규표현식은 항상 그 중심에 있다.
1950년대 수학자 스티븐 클레이니(Stephen Kleene)가 형식 언어 이론에서 정의한 개념이 기원이며, 오늘날 Python·JavaScript·Java·SQL 등 사실상 모든 언어가 정규표현식을 내장하고 있다.
핵심 문법 5가지
정규표현식의 전체 명세는 방대하지만, 실무에서는 아래 5가지 패턴으로 대부분의 문제를 해결한다.
| 기호 | 의미 | 예시 | |---|---|---| | . | 임의의 문자 1개 | a.c → abc, aXc | | * | 앞 요소 0회 이상 반복 | ab* → a, ab, abb | | + | 앞 요소 1회 이상 반복 | ab+ → ab, abb (a 단독 X) | | ? | 앞 요소 0회 또는 1회 | colou?r → color, colour | | [] | 문자 클래스 (집합) | [0-9] → 숫자 한 자리 | | ^ / $ | 문자열 시작 / 끝 앵커 | ^\d{3} → 숫자 3자리로 시작 | | {n,m} | 앞 요소 n~m회 반복 | \d{2,4} → 숫자 2~4자리 | | \d / \w | 숫자 / 단어문자 단축 | \w+ → 영문자·숫자·_ |
예시: 실전 패턴 5개
import re
# 1. 이메일 검증
email_pattern = r'^[\w\.-]+@[\w\.-]+\.\w{2,}$'
print(re.match(email_pattern, 'user@example.com')) # Match
# 2. 전화번호 추출 (한국 형식)
phone_pattern = r'0\d{1,2}-\d{3,4}-\d{4}'
text = "연락처: 010-1234-5678 또는 02-123-4567"
print(re.findall(phone_pattern, text)) # ['010-1234-5678', '02-123-4567']
# 3. HTML 태그 제거
clean = re.sub(r'<[^>]+>', '', '<b>굵은 텍스트</b>')
print(clean) # 굵은 텍스트
# 4. 로그 파일 타임스탬프 추출
log_pattern = r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}'
log = "2026-04-30 09:15:22 ERROR: connection timeout"
print(re.search(log_pattern, log).group()) # 2026-04-30 09:15:22
# 5. URL 추출
url_pattern = r'https?://[\w\./\-?=&]+'
urls = re.findall(url_pattern, 'Visit https://example.com/path?q=1 for details')활용 사례
- AI 데이터 전처리: 학습 데이터에서 개인정보(이메일·전화번호·주민번호) 마스킹. LLM 파인튜닝 전 클렌징 단계에서 필수로 사용.
- 로그 파싱: 서버 로그에서 HTTP 상태 코드, IP 주소, 응답 시간 자동 추출. llm 서비스 운영에서 이상 탐지 자동화에 활용.
- 폼 입력 검증: 회원가입 폼의 이메일·비밀번호·우편번호 형식 검증. 프론트엔드와 백엔드 양쪽에서 동일 패턴 적용.
- 코드 분석: AI 코드 어시스턴트가 파일에서 함수 정의, import 구문, 변수명 등을 추출할 때 정규표현식을 내부적으로 사용.
주의점
정규표현식은 강력하지만 남용 시 유지보수가 어려워진다. 복잡한 HTML·JSON 파싱에는 전용 파서(dom, json-parser)를 사용하는 것이 올바른 접근이다. 또한 .*와 같은 탐욕적(greedy) 패턴은 예기치 않은 범위까지 매칭되므로 .*?(비탐욕) 패턴과 구분해 사용해야 한다.
관련 용어
- string — 정규표현식의 처리 대상인 문자열 자료형
- api — 정규표현식 함수를 제공하는 언어 내장 라이브러리 인터페이스
- json — 정규표현식 대신 전용 파서를 사용해야 하는 구조화 데이터 형식
- llm — 학습 데이터 전처리 단계에서 정규표현식을 대규모로 활용