Жадное и нежадное сопоставление

Регулярные выражения в Python

Maria Eugenia Inzaugarat

Data Scientist

Жадное и нежадное сопоставление

  • Два типа сопоставления:

    • Жадное
    • Нежадное (ленивое)
  • Стандартные квантификаторы по умолчанию жадные: *, +, ?, {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...