정규 표현식(regular expression)의 그룹 캡처(group capturing) 기능을 활용하면 문자열 내부에서 원하는 부분 문자열을 손쉽게 추출할 수 있습니다. 다만, 추출하려는 부분 문자열의 형식과 그 주변에 어떤 텍스트가 위치하는지 미리 파악하고 있어야 합니다.
예제: 금액 정보 추출하기
예를 들어, 한 줄의 텍스트에서 $xxx,xxx.xx 형식으로 된 금액 정보를 추출하고 싶다면 다음과 같이 코드를 작성할 수 있습니다.
import re
text = 'The phone is priced at $15,745.95 and has a camera.'
m = re.search(r'(\$[0-9]*\.[0-9]{2})', text)
if m:
print(m.group(1))
이 코드를 실행하면 다음과 같은 결과가 출력됩니다.
$15,745.95
코드 설명
re.search()는 문자열 전체를 검색하여 패턴과 일치하는 첫 번째 부분을 찾아줍니다.- 패턴을 괄호
()로 묶으면 일치한 부분이 그룹으로 캡처되며,group(1)을 통해 해당 값을 가져올 수 있습니다. r'...'형태의 raw string을 사용하면 백슬래시 이스케이프 처리로 인한 의도치 않은 동작을 방지할 수 있습니다.m이None인지 확인하는 조건문은 패턴이 일치하지 않을 때 발생하는 오류를 예방해 줍니다.
실제로 사용할 정규 표현식은 적용하려는 상황과 데이터의 형식에 따라 달라질 수 있으므로, 자신의 사용 사례에 맞게 패턴을 적절히 조정하는 것이 좋습니다.