탐욕적 매칭 vs. 비탐욕적 매칭

Python 정규 표현식

Maria Eugenia Inzaugarat

Data Scientist

탐욕적 매칭 vs. 비탐욕적 매칭

  • 매칭 방식은 두 가지:

    • 탐욕적(greedy) 매칭
    • 비탐욕적(non-greedy, lazy) 매칭
  • 표준 수량자는 기본적으로 탐욕적: *, +, ?, {num, num}

Python 정규 표현식

탐욕적 매칭

  • 탐욕적 매칭: 가능한 한 많은 문자와 매칭

  • 가장 긴 매칭 결과를 반환

import re
re.match(r"\d+", "12345bcada")
<re.Match object; span=(0, 5), match='12345'>

Python 정규 표현식

탐욕적 매칭

  • 매칭된 문자가 너무 많으면 역추적

  • 한 번에 한 문자씩 포기

import re
re.match(r".*hello", "xhelloxxxxxx")
<re.Match object; span=(0, 6), match='xhello'>

Python 정규 표현식

비탐욕적 매칭

  • 비탐욕적: 필요한 만큼만 최소한으로 매칭
  • 가장 짧은 매칭 결과를 반환
  • 탐욕적 수량자 뒤에 ?를 추가
import re
re.match(r"\d+?", "12345bcada")
<re.Match object; span=(0, 1), match='1'>

Python 정규 표현식

비탐욕적 매칭

  • 매칭된 문자가 너무 적으면 역추적

  • 한 번에 한 문자씩 확장

import re
re.match(r".*?hello", "xhelloxxxxxx")
<re.Match object; span=(0, 6), match='xhello'>

Python 정규 표현식

연습해 봅시다!

Python 정규 표현식

Preparing Video For Download...