Нежадные (ленивые) квантификаторы регулярных выражений в Python

В этом уроке вы узнаете о Regex Non-Greedy: нежадных (или ленивых) квантификаторах регулярных выражений, которые соответствуют своим предыдущим элементам как можно меньше раз.

Что такое нежадные (или ленивые) квантификаторы регулярных выражений?

Квантификаторы позволяют сопоставлять предыдущие элементы несколько раз и работают в одном из двух режимов: жадном и нежадном (ленивом). В зависимости от режима их называют жадными и нежадными квантификаторами.

По умолчанию квантификаторы работают в жадном режиме. Это означает, что жадные квантификаторы будут максимально соответствовать своим предыдущим элементам, чтобы вернуться к максимально возможному совпадению.

С другой стороны, нежадные квантификаторы будут совпадать как можно меньше, чтобы вернуть наименьшее возможное совпадение. нежадные квантификаторы являются противоположностью жадных.

Чтобы превратить жадные квантификаторы в нежадные, к ним добавляется дополнительный вопросительный знак(?). В следующей таблице показаны жадные и соответствующие им нежадные квантификаторы:

Жадный квантификатор Ленивый квантификатор Значение
* *? Сопоставляет предыдущий элемент ноль или более раз.
+ +? Сопоставляет предыдущий элемент один или несколько раз.
? ?? Сопоставляет предшествующий элемент ноль или один раз.
{ н } {н}? Сопоставление предыдущего элемента ровно n раз.
{ н ,} {н,}? Сопоставление не менее n раз.
{ п , м } { н , м }? От n до m раз.

Пример нежадных квантификаторов регулярных выражений в Python

В следующей программе используется нежадный квантификатор (+?) для сопоставления текста в кавычках  («») элемента button:

import re

s = '<button type="submit" class="btn">Send</button>'

pattern = '".+?"'
matches = re.finditer(pattern, s)

for match in matches:
    print(match.group())

Выход:

"submit"
"btn"
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *