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

파이썬 정규식 반복 수량자(+, *, ?) 의미와 활용 예제

정규식에서 반복 수량자란?

정규표현식에서 +, *, ? 같은 반복 수량자를 사용하면 특정 패턴이 몇 번 반복되는지 간결하게 지정할 수 있어, 표현 가능한 패턴의 범위가 훨씬 넓어집니다.

  • + — 왼쪽 패턴이 1회 이상 반복됨을 의미합니다. 예를 들어 i+는 i가 하나 이상 연속으로 나타나는 경우와 일치합니다.
  • * — 왼쪽 패턴이 0회 이상 반복됨을 의미합니다. 즉, 아예 없어도 일치로 처리됩니다.
  • ? — 왼쪽 패턴이 0회 또는 1회 나타나는 경우와 일치합니다. 주로 선택적 요소를 표현할 때 사용합니다.

예제 코드

다음 코드는 앞서 설명한 반복 수량자의 동작을 실제로 보여줍니다.

import re

s = "sheeeeeeeeple"
match = re.search(r"he+", s)
print(match.group())

패턴 r"he+"는 문자열에서 h 바로 뒤에 e가 하나 이상 연속으로 이어지는 부분을 찾습니다. 검색 대상 문자열에는 e가 여러 개 이어져 있으므로, 해당 구간 전체가 한 번에 매칭됩니다.

실행 결과

heeeeeeee

h 다음에 이어지는 모든 e가 포함되어 heeeeeeee가 출력된 것을 확인할 수 있습니다. 참고로 기본 수량자는 탐욕적(greedy) 방식으로 동작하기 때문에, 일치할 수 있는 가장 긴 부분까지 최대한 많이 소비합니다. 만약 최소한만 일치시키고 싶다면 he+?처럼 수량자 뒤에 ?를 붙여 비탐욕적(non-greedy) 모드로 전환할 수 있습니다.

함께 알아두면 좋은 반복 문법

  • {n} — 정확히 n번 반복 (예: e{3}은 e가 정확히 3개)
  • {n} — n번 이상 반복
  • {n,m} — n번 이상 m번 이하 반복