Potrivire greedy vs. non-greedy

Expresii regulate în Python

Maria Eugenia Inzaugarat

Data Scientist

Potrivire greedy vs. non-greedy

  • Două tipuri de metode de potrivire:

    • Greedy
    • Non-greedy sau lazy
  • Cuantificatorii standard sunt greedy implicit: *, +, ?, {num, num}

Expresii regulate în Python

Potrivire greedy

  • Greedy: potrivește cât mai multe caractere posibil

  • Returnează cea mai lungă potrivire

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

Expresii regulate în Python

Potrivire greedy

  • Face backtracking când sunt prea multe caractere potrivite

  • Renunță la caractere unul câte unul

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

Expresii regulate în Python

Potrivire non-greedy

  • Lazy: potrivește cât mai puține caractere necesare
  • Returnează cea mai scurtă potrivire
  • Adăugați ? după cuantificatorii greedy
import re
re.match(r"\d+?", "12345bcada")
<re.Match object; span=(0, 1), match='1'>

Expresii regulate în Python

Potrivire non-greedy

  • Face backtracking când sunt prea puține caractere potrivite

  • Extinde caracterele unul câte unul

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

Expresii regulate în Python

Să exersăm!

Expresii regulate în Python

Preparing Video For Download...