Correspondência gulosa vs. não gulosa

Expressões regulares em Python

Maria Eugenia Inzaugarat

Data Scientist

Correspondência gulosa vs. não gulosa

  • Dois tipos de correspondência:

    • Gulosa
    • Não gulosa (lazy)
  • Quantificadores padrão são gulosos por padrão: *, +, ?, {num, num}

Expressões regulares em Python

Correspondência gulosa

  • Gulosa: casa o máximo de caracteres possível

  • Retorna a maior correspondência

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

Expressões regulares em Python

Correspondência gulosa

  • Faz backtracking quando casou caracteres demais

  • Devolve caracteres um a um

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

Expressões regulares em Python

Correspondência não gulosa

  • Não gulosa (lazy): casa o mínimo necessário
  • Retorna a menor correspondência
  • Acrescente ? aos quantificadores gulosos
import re
re.match(r"\d+?", "12345bcada")
<re.Match object; span=(0, 1), match='1'>

Expressões regulares em Python

Correspondência não gulosa

  • Faz backtracking quando casou caracteres de menos

  • Expande os caracteres um a um

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

Expressões regulares em Python

Vamos praticar!

Expressões regulares em Python

Preparing Video For Download...