Python을 배워보자/11. 기타 심화

파이썬 정규 표현식

_Blue_Sky_ 2024. 9. 26. 09:45
728x90
728x90

파이썬 정규 표현식 심화: 문자열 처리의 강력한 도구

서론

파이썬의 정규 표현식은 복잡한 텍스트 패턴을 효율적으로 검색하고 조작하는 데 필수적인 도구입니다. 이 글에서는 정규 표현식의 기본 개념부터 심화 내용까지 다루며, 다양한 예시를 통해 실제 활용 방법을 설명합니다. 특히, 파이썬의 re 모듈을 중심으로 자세히 살펴보겠습니다.

정규 표현식이란?

정규 표현식(Regular Expression)은 특정한 규칙을 가진 문자열 집합을 표현하는 데 사용하는 형식 언어입니다. 텍스트 데이터에서 원하는 부분을 추출하거나, 문자열을 변환하거나, 유효성을 검증하는 등 다양한 작업에 활용됩니다.

파이썬에서 정규 표현식 사용하기: re 모듈

파이썬에서는 re 모듈을 통해 정규 표현식을 사용할 수 있습니다. 주요 함수는 다음과 같습니다.

  • re.compile(): 정규 표현식을 컴파일하여 패턴 객체를 생성합니다.
  • search(): 문자열에서 패턴과 일치하는 첫 번째 부분을 찾습니다.
  • findall(): 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환합니다.
  • sub(): 문자열에서 패턴과 일치하는 부분을 다른 문자열로 치환합니다.

정규 표현식의 기본 메타 문자

  • .: 임의의 문자 하나와 매치됩니다.
  • ^: 문자열의 시작 부분과 매치됩니다.
  • $: 문자열의 끝 부분과 매치됩니다.
  • *: 앞의 문자 0개 이상과 매치됩니다.
  • +: 앞의 문자 1개 이상과 매치됩니다.
  • ?: 앞의 문자 0개 또는 1개와 매치됩니다.
  • {m,n}: 앞의 문자 m개 이상 n개 이하와 매치됩니다.
  • []: 문자 집합을 나타냅니다. (예: [abc]는 a, b, c 중 하나와 매치)
  • [^]: 부정 문자 집합을 나타냅니다. (예: [^0-9]는 숫자가 아닌 문자와 매치)

특수 문자와 메타 문자의 에스케이핑

메타 문자를 일반 문자로 사용하려면 백슬래시(\)를 사용하여 에스케이핑합니다. (예: \.은 마침표 문자 자체와 매치)

그룹핑과 백레퍼런싱

  • (): 그룹핑하여 부분 표현식을 하나의 단위로 묶습니다.
  • \1, \2, ...: 앞에서 정의된 그룹을 참조합니다.

예시

import re

# 이메일 주소 찾기
text = "my email is abc@example.com and your email is xyz@example.net"
pattern = r'\S+@\S+'
matches = re.findall(pattern, text)
print(matches)  # ['abc@example.com', 'xyz@example.net']

# 전화번호 찾기 (다양한 형식 지원)
text = "My phone number is 010-1234-5678 and 02-123-4567"
pattern = r'(\d{3}-\d{4}-\d{4}|\d{2}-\d{3}-\d{4})'
matches = re.findall(pattern, text)
print(matches)  # ['010-1234-5678', '02-123-4567']

심화: 탐욕적 vs. 비탐욕적, 플래그, lookaround

  • 탐욕적 vs. 비탐욕적: *, +, ?는 기본적으로 탐욕적이어서 가능한 한 많은 문자를 매치하려고 합니다. 비탐욕적으로 만들려면 *?, +?, ??를 사용합니다.
  • 플래그: re.I (대소문자 무시), re.S (.이 모든 문자와 매치), re.M (다중 라인 모드) 등 다양한 플래그를 사용하여 검색 옵션을 조정할 수 있습니다.
  • lookaround: 패턴의 앞뒤 문자를 확인하는 기능으로, (?=...) (긍정 앞쪽 탐색), (?!...) (부정 앞쪽 탐색), (?<=...) (긍정 뒤쪽 탐색), (?<!...) (부정 뒤쪽 탐색) 등이 있습니다.

결론

정규 표현식은 파이썬에서 문자열 처리를 강력하게 지원하는 도구입니다. 다양한 메타 문자와 기능을 조합하여 복잡한 패턴을 표현하고, 텍스트 데이터에서 원하는 정보를 효율적으로 추출할 수 있습니다. 꾸준히 연습하고 다양한 예제를 통해 정규 표현식을 익힌다면, 파이썬 프로그래밍 실력을 한층 더 향상시킬 수 있을 것입니다.

 

728x90
728x90

'Python을 배워보자 > 11. 기타 심화' 카테고리의 다른 글

파이썬 컴프리헨션  (0) 2024.09.26
파이썬 람다 표현식  (0) 2024.09.26
파이썬 데코레이터  (0) 2024.09.26