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

파이썬 정규식으로 문자열에서 특정 단어를 정확히 매칭하는 방법

개요

정규식(Regular Expression)을 활용하면 긴 문자열 속에서 원하는 단어만 골라내는 작업을 간단하고 정확하게 처리할 수 있습니다. 아래 코드는 주어진 URL 문자열에서 'meeting'이라는 단어를 매칭하는 예제입니다.

여기서 핵심은 긍정형 후방 탐색(positive look-behind)긍정형 전방 탐색(positive look-ahead) 어설션을 사용한다는 점입니다. 이 두 어설션은 단어를 둘러싸고 있는 문자들을 매칭 조건으로 확인하지만, 그 문자들이 실제 매칭 결과에는 포함되지 않도록 합니다.

정규식 패턴 분석

예제에서 사용된 패턴은 다음과 같습니다.

r'(?<=[\W_])meeting(?=[\W_])'
  • (?<=[\W_]) — 후방 탐색: 'meeting' 바로 앞에 비단어 문자(\W) 또는 밑줄(_)이 있어야 합니다.
  • meeting — 실제로 매칭하려는 대상 단어입니다.
  • (?=[\W_]) — 전방 탐색: 'meeting' 바로 뒤에도 비단어 문자 또는 밑줄이 있어야 합니다.

이런 구조 덕분에 'meetings'나 'meetingroom'처럼 더 큰 단어의 일부인 경우에는 매칭되지 않고, 문맥상 독립적으로 존재하는 'meeting'만 정확하게 찾아낼 수 있습니다.

예제 코드

import re

s = """https://www.google.com/meeting_agenda_minutes.html"""
result = re.findall(r'(?<=[\W_])meeting(?=[\W_])', s)
print(result)

실행 결과

['meeting']

URL 문자열에서 'meeting'은 앞이 슬래시(/), 뒤가 밑줄(_)로 둘러싸여 있어 탐색 조건을 충족하므로 정상적으로 매칭됩니다. 만약 문자열에 'meetings'라는 단어가 있었다면 뒤에 비단어 문자 대신 's'가 오기 때문에 매칭에서 제외됩니다.

마무리

탐색 어설션(look-around assertion)은 매칭 대상 자체를 변경하지 않으면서 주변 문맥 조건을 검사할 수 있는 강력한 도구입니다. 특정 단어를 경계 기준으로 정확히 추출해야 하는 텍스트 처리 작업에서 유용하게 활용할 수 있습니다.