[python] re Module: A Guide to Regular Expressions

Hyunjun Kim·2024년 9월 18일

re 모듈이란?

Python의 re 모듈은 정규 표현식을 활용하여 문자열을 처리할 수 있는 다양한 기능을 제공합니다. 이 모듈을 사용하면 복잡한 패턴을 쉽고 빠르게 처리할 수 있으며, 파일 이름 정렬이나 특정 형식의 텍스트 추출 같은 문제들을 간단히 해결할 수 있습니다.

re 모듈의 장점

유연성: 다양한 패턴을 사용하여 복잡한 문자열 처리 가능
성능: 문자열을 빠르게 검색하고 처리
다양한 활용성: 파일명 정렬, 텍스트 데이터 클렌징, 로그 분석 등 다양한 분야에서 사용


주요 기능

패턴 매칭: 문자열에서 특정 패턴을 찾기
치환: 패턴에 맞는 부분을 다른 텍스트로 대체
분할: 특정 패턴을 기준으로 문자열을 나누기
반복 탐색: 여러 패턴을 한꺼번에 검색

주요 표현들

  • 're.match()' : 문자열의 시작에서 패턴 매칭
  • 're.search()' : 문자열 전체에서 첫 번째 패턴 매칭
  • 're.findall()' : 문자열에서 패턴에 맞는 모든 부분 문자열을 리스트로 반환
  • 're.compile()' : 자주 사용하는 정규 표현식을 컴파일하여 여러 번 사용
  • 're.sub()' : 문자열에서 패턴에 맞는 부분 문자열을 다른 문자열로 대체

re 모듈의 기본 사용법

re.match()
함수는 문자열의 시작 부분이 특정 패턴과 일치하는지 확인하는 함수입니다.

import re

# 패턴과 일치하는 문자열
text = "Hello, world!"

# 'Hello'로 시작하는지 확인하는 정규 표현식 패턴
pattern = r"Hello"

# re.match() 사용
match = re.match(pattern, text)

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

re.search()
문자열 내에서 특정 패턴을 찾는 함수입니다. 패턴을 발견하면 첫 번째 일치 항목을 반환하며, 일치하지 않으면 None을 반환합니다.

import re

text = "Sample123Text"
pattern = r"\d+"  # 하나 이상의 숫자를 찾는 패턴
match = re.search(pattern, text)

if match:
    print(f"Match found: {match.group()}")  # 123 출력
else:
    print("No match found")


re.findall()
모든 패턴 일치를 리스트로 반환하는 함수입니다.

text = "apple banana 123 orange 456"
pattern = r"\d+"

matches = re.findall(pattern, text)
print(matches)  # ['123', '456']

re.compile()
자주 사용하는 정규 표현식을 컴파일하여 여러 번 사용할 수 있도록 합니다.

pattern = re.compile(r"\w+@\w+\.\w+")
text = "Send email to hello@example.com or contact@sample.org"

matches = pattern.findall(text)
print(matches)  # ['hello@example.com', 'contact@sample.org']

re.sub()
자열에서 특정 패턴을 찾아 다른 문자열로 대체할 때 사용됩니다.

import re

# 원본 문자열
text = "My phone number is 123-456-7890."

# 숫자를 *로 대체하는 패턴
pattern = r"\d"

# re.sub()로 숫자를 *로 대체
new_text = re.sub(pattern, "*", text)

print(new_text)  # My phone number is ***-***-****.

Raw String (r'')의 중요성

정규 표현식을 사용할 때 Python의 Raw String 표기법(r"")은 매우 유용합니다. 이 표기법은 문자열에서 백슬래시(\)를 일반 문자로 처리하게 해줍니다.

정규 표현식에서 백슬래시는 특별한 의미를 가지기 때문에, 이를 쉽게 표현하려면 Raw String을 사용하는 것이 좋습니다.

normal_string = "abc\n"  # 줄바꿈 포함
raw_string = r"abc\n"    # "\n"을 문자 그대로 해석

print(normal_string)  # abc (줄바꿈 발생)
print(raw_string)     # abc\n (그대로 출력)

profile
Data Analytics Engineer 가 되

0개의 댓글