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

Python 정규식으로 문자열에서 여러 단어를 한 번에 찾는 방법

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, 그리고 적절한 플래그를 조합하면 복잡한 반복문 없이도 여러 키워드를 간결하고 효율적으로 검색할 수 있습니다.