Python에서 정규 표현식 사용하기

Python에서 정규 표현식 사용하기


목차

  1. 서론
  2. 정규 표현식이란 무엇인가?
  3. Python에서 정규 표현식 사용하기
    1. 정규 표현식 모듈 re 소개
    2. 기본 패턴 매칭
    3. 자주 사용되는 메타문자
  4. 정규 표현식 함수
    1. re.match()
    2. re.search()
    3. re.findall()
    4. re.finditer()
    5. re.sub()
    6. re.split()
  5. 정규 표현식 컴파일
  6. 실습 예제
  7. 마무리
  8. 추천 태그

1. 서론

정규 표현식(Regular Expressions)은 텍스트 데이터를 처리하고 조작하는 강력한 도구입니다. Python에서는 re 모듈을 사용하여 정규 표현식을 쉽게 활용할 수 있습니다. 이번 포스팅에서는 정규 표현식의 기본 개념부터 Python에서 정규 표현식을 사용하는 방법까지 초보 개발자도 쉽게 이해할 수 있도록 설명하겠습니다.


2. 정규 표현식이란 무엇인가?

정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용됩니다. 문자열 검색, 치환, 추출 등의 작업을 효율적으로 수행할 수 있게 해줍니다.


3. Python에서 정규 표현식 사용하기


3.1 정규 표현식 모듈 re 소개

Python에서는 re 모듈을 사용하여 정규 표현식을 처리합니다. re 모듈은 다양한 함수와 메소드를 제공하여 정규 표현식 작업을 쉽게 수행할 수 있습니다.


import re

3.2 기본 패턴 매칭

기본적인 정규 표현식을 사용하여 패턴 매칭을 할 수 있습니다. 예를 들어, 문자열에 숫자가 포함되어 있는지 확인할 수 있습니다.


pattern = r'\d+'
text = "There are 123 apples"
match = re.search(pattern, text)

if match:
    print("숫자가 포함되어 있습니다.")
else:
    print("숫자가 포함되어 있지 않습니다.")

3.3 자주 사용되는 메타문자

  • .: 임의의 한 문자
  • ^: 문자열의 시작
  • $: 문자열의 끝
  • *: 0개 이상의 반복
  • +: 1개 이상의 반복
  • ?: 0개 또는 1개의 반복
  • []: 문자 클래스
  • |: OR 연산자
  • (): 그룹화

pattern = r'^[A-Za-z]+$'
text = "HelloWorld"
match = re.match(pattern, text)

if match:
    print("영문자만 포함된 문자열입니다.")
else:
    print("영문자 외의 문자가 포함되어 있습니다.")

4. 정규 표현식 함수


4.1 re.match()

re.match() 함수는 문자열의 시작부터 패턴이 일치하는지 확인합니다.


pattern = r'Hello'
text = "Hello, world!"
match = re.match(pattern, text)

if match:
    print("매칭되었습니다.")
else:
    print("매칭되지 않았습니다.")

4.2 re.search()

re.search() 함수는 문자열 전체를 검색하여 패턴이 일치하는지 확인합니다.


pattern = r'world'
text = "Hello, world!"
match = re.search(pattern, text)

if match:
    print("매칭되었습니다.")
else:
    print("매칭되지 않았습니다.")

4.3 re.findall()

re.findall() 함수는 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환합니다.


pattern = r'\d+'
text = "There are 123 apples and 456 oranges"
matches = re.findall(pattern, text)
print(matches)  # 출력: ['123', '456']

4.4 re.finditer()

re.finditer() 함수는 문자열에서 패턴과 일치하는 모든 부분을 반복자(iterator) 객체로 반환합니다.


pattern = r'\d+'
text = "There are 123 apples and 456 oranges"
matches = re.finditer(pattern, text)

for match in matches:
    print(match.group())  # 출력: 123, 456

4.5 re.sub()

re.sub() 함수는 문자열에서 패턴과 일치하는 부분을 다른 문자열로 치환합니다.


pattern = r'\d+'
text = "There are 123 apples and 456 oranges"
new_text = re.sub(pattern, '#', text)
print(new_text)  # 출력: There are # apples and # oranges

4.6 re.split()

re.split() 함수는 패턴을 기준으로 문자열을 분할하여 리스트로 반환합니다.


pattern = r'\s+'
text = "Hello, world! Welcome to Python."
words = re.split(pattern, text)
print(words)  # 출력: ['Hello,', 'world!', 'Welcome', 'to', 'Python.']

5. 정규 표현식 컴파일

정규 표현식을 미리 컴파일하여 성능을 최적화할 수 있습니다.


pattern = re.compile(r'\d+')
text = "There are 123 apples and 456 oranges"
matches = pattern.findall(text)
print(matches)  # 출력: ['123', '456']

6. 실습 예제

정규 표현식을 사용하여 이메일 주소를 검증하는 프로그램을 작성해보겠습니다.


import re

def validate_email(email):
    pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
    if re.match(pattern, email):
        return True
    else:
        return False

emails = ["test@example.com", "invalid-email", "hello@world.net"]

for email in emails:
    if validate_email(email):
        print(f"{email}은 유효한 이메일 주소입니다.")
    else:
        print(f"{email}은 유효하지 않은 이메일 주소입니다.")

7. 마무리

이번 포스팅에서는 Python에서 정규 표현식을 사용하는 방법을 알아보았습니다. 정규 표현식은 텍스트 데이터를 처리하고 조작하는 강력한 도구로, 다양한 패턴 매칭 작업을 효율적으로 수행할 수 있습니다. 정규 표현식을 잘 활용하면 데이터 처리 작업을 더욱 간편하게 수행할 수 있습니다.

다음 이전