Python 정규식으로 여러 단어 동시에 매칭하기
텍스트 처리 작업을 하다 보면 하나의 문자열 안에서 특정 단어 여러 개가 포함되어 있는지 확인해야 하는 경우가 자주 있습니다. 이럴 때 Python의 re 모듈과 정규식의 OR(|) 연산자를 활용하면 여러 단어를 한 번의 검색으로 모두 찾아낼 수 있습니다.
아래 예제 코드는 주어진 문자열에서 'roses', 'marigolds', 'orchids'라는 세 단어를 동시에 검색합니다.
예제 코드
import re s = "These are roses and lilies and orchids, but not marigolds or .." r = re.compile(r'\broses\b | \bmarigolds\b | \borchids\b', flags=re.I | re.X) print(r.findall(s))
실행 결과
['roses', 'orchids', 'marigolds']
코드 설명
\b: 단어 경계(word boundary)를 의미합니다. 단어의 일부분이 아니라 완전한 단어만 매칭되도록 합니다. 예를 들어\broses\b는 'sunroses' 같은 문자열에는 매칭되지 않습니다.|: OR 연산자로, 여러 개의 대안 패턴 중 하나라도 일치하면 매칭됩니다.re.I: 대소문자를 구분하지 않고 매칭합니다(IGNORECASE).re.X: 상세(verbose) 모드로, 패턴 내 공백과 주석을 무시해 가독성 있게 정규식을 작성할 수 있습니다.findall(): 문자열에서 패턴과 일치하는 모든 부분을 리스트 형태로 반환합니다.
이처럼 | 연산자와 단어 경계 \b, 그리고 적절한 플래그를 조합하면 복잡한 반복문 없이도 여러 키워드를 간결하고 효율적으로 검색할 수 있습니다.