Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 정규식 마스터하기: re.findall() 완벽 활용 가이드

re.findall()은 문자열에서 패턴과 일치하는 모든 결과를 리스트(list) 형태로 반환하는 Python 정규식 모듈(re)의 핵심 함수입니다. 주어진 문자열의 처음부터 끝까지 전체를 탐색하며, 패턴에 일치하는 모든 항목을 한 번에 찾아준다는 점이 가장 큰 특징입니다.

re.findall()의 특징

정규식으로 문자열을 검색할 때는 일반적으로 re.findall()을 사용하는 것이 권장됩니다. 그 이유는 이 함수가 re.search()re.match()의 역할을 모두 포괄하면서도, 일치하는 결과를 빠짐없이 수집할 수 있기 때문입니다.

  • re.search(): 문자열 전체에서 패턴과 일치하는 첫 번째 항목만 반환합니다.
  • re.match(): 문자열의 시작 부분에서 패턴이 일치하는 경우에만 반환합니다.
  • re.findall(): 문자열 전체에서 패턴과 일치하는 모든 항목을 리스트로 반환합니다.

기본 사용 예제

먼저 re.search()를 사용한 간단한 예제를 살펴보겠습니다.

import re

result = re.search(r'TP', 'TP Tutorials Point TP')
print(result.group())

출력 결과

TP

re.search()는 일치하는 첫 번째 항목인 'TP'만 반환합니다. 하지만 같은 문자열에서 re.findall()을 사용하면 어떻게 될까요?

import re

result = re.findall(r'TP', 'TP Tutorials Point TP')
print(result)

출력 결과

['TP', 'TP']

위 출력에서 확인할 수 있듯이, re.findall()은 문자열 내에 존재하는 일치 항목 두 개를 모두 리스트로 반환했습니다.

활용 팁: 반복문과 함께 사용하기

반환된 리스트는 반복문(for loop)과 함께 사용하면 더욱 유용합니다. 예를 들어, 텍스트에서 모든 숫자를 추출하는 코드는 다음과 같이 작성할 수 있습니다.

import re

text = "가격은 100원이고, 할인율은 20퍼센트입니다."
numbers = re.findall(r'\d+', text)
print(numbers)
['100', '20']

이처럼 re.findall()은 로그 분석, 데이터 추출, 텍스트 전처리 등 다양한 상황에서 문자열 내의 모든 일치 패턴을 손쉽게 가져와야 할 때 가장 효율적인 선택입니다.