- Жадность (регулярные выражения)
-
Жадность (регулярные выражения)
Жадность (в отношении регулярного выражения) — характеристика, указывающая на поведение регулярного выражения при обработке шаблона.
Жадное регулярное выражение «стремится» захватить максимально возможный текст (например, указание «один или более символов» трактуется как «один или более, насколько возможно»).
Нежадное регулярное выражение «стремится» захватить минимально возможный текст (например, указание «один или более символов» будет трактоваться как «один символ»).
Примеры жадных выражений:
/\[.+\]/
Захватывает текст, находящийся между квадратных скобок. Однако, если в тексте несколько вхождений текста квадратных скобок, будет захвачен весь текст между первыми открывающими скобками и последними закрывающими.
/\[.+?\]/
Аналогично, захватывает текст, находящийся между квадратными скобками, но прекращает захват после первых же закрывающих квадратных скобок.
Содержание
Разница в реализации
При необходимости обработать жадный элемент шаблона, парсер начинает поиск соответствия с конца обрабатываемой строки; при обработке нежадного элемента, проверка производится с текущего места обработки строки до первого несоответствия.
Примеры реализации
Символ
*
(звёздочка) при работе с файлами обычно означает «ноль или более символов». В современных операционных системах это нежадное выражение; в DOS этот символ трактовался как жадный, то есть символ*
означал «все символы до конца имени файла».Сравнение работы
Исходная строка:
a = 2 + (b + c) * (d + e)
Цель: выделить выражение в скобках.
Жадное регулярное выражение
/\(.+\)/
:(b + c) * (d + e)
Нежадное регулярное выражение
/\(.+?\)/
:(b + c)
См. также
Wikimedia Foundation. 2010.