본문 바로가기

언어/Python

[ Python ] 정규 표현식의 기본 구성 요소

반응형

파이썬에서 정규 표현식(Regular Expression, Regex)은 문자열에서 특정 패턴을 찾거나 변환하는 데 사용됩니다. 파이썬의 re 모듈을 사용하면 정규 표현식을 사용할 수 있습니다. 정규 표현식의 기본 구성 요소는 다음과 같습니다:

1. 리터럴 문자(Literal Characters)

문자 자체를 의미합니다.

  • 예: a, 1, @

2. 메타 문자(Metacharacters)

특정 패턴을 나타내는 특별한 의미를 가진 문자들입니다.

  • .: 개행 문자를 제외한 모든 단일 문자와 일치
  • ^: 문자열의 시작을 의미
  • $: 문자열의 끝을 의미
  • *: 앞의 문자가 0번 이상 반복됨을 의미
  • +: 앞의 문자가 1번 이상 반복됨을 의미
  • ?: 앞의 문자가 0번 또는 1번 나타남을 의미
  • {}: 특정 횟수만큼 반복됨을 의미 (예: {3}은 정확히 3번, {3,}은 3번 이상, {3,5}은 3번에서 5번까지)
  • []: 문자 클래스 (character class) 정의. 대괄호 안의 문자 중 하나와 일치
  • |: OR 연산자, 두 패턴 중 하나와 일치
  • (): 그룹화, 그룹을 만들어 부분 일치를 검출하고 캡처함

3. 문자 클래스(Character Classes)

대괄호 안에 문자를 넣어 특정 문자 집합을 정의합니다.

  • [abc]: a, b, c 중 하나
  • [a-z]: 소문자 알파벳 중 하나
  • [A-Z]: 대문자 알파벳 중 하나
  • [0-9]: 숫자 중 하나
  • [^abc]: a, b, c가 아닌 문자

4. 특수 시퀀스(Special Sequences)

백슬래시와 결합하여 특정 패턴을 나타냅니다.

  • \d: 숫자와 일치 ( [0-9]와 동일)
  • \D: 숫자가 아닌 문자와 일치 ([^0-9]와 동일)
  • \w: 단어 문자와 일치 (영문자, 숫자, 밑줄 포함) ([a-zA-Z0-9_]와 동일)
  • \W: 단어 문자가 아닌 문자와 일치 ([^a-zA-Z0-9_]와 동일)
  • \s: 공백 문자와 일치 (공백, 탭, 줄바꿈 등)
  • \S: 공백 문자가 아닌 문자와 일치
  • \b: 단어 경계 (word boundary)와 일치
  • \B: 단어 경계가 아닌 위치와 일치

5. 이스케이프 문자(Escape Characters)

특수 문자를 리터럴로 인식시키기 위해 백슬래시를 사용합니다.

  • 예: \\, \*, \.

6. 예제

import re

# 정규 표현식 패턴
pattern = r'\d{3}-\d{2}-\d{4}'

# 문자열
string = "My number is 123-45-6789."

# 패턴과 일치하는 부분 찾기
match = re.search(pattern, string)

if match:
    print("Match found:", match.group())
else:
    print("No match found.")

위 예제에서 패턴 \d{3}-\d{2}-\d{4}는 세 자리 숫자, 두 자리 숫자, 네 자리 숫자가 하이픈으로 구분된 형식을 의미합니다. re.search 함수는 문자열에서 이 패턴과 일치하는 부분을 찾습니다.

반응형