php Регулярные выражения Знак вопроса ? -- что он значит

melisa's picture

Кажется ленивый квантификатор обозначается знаком вопроса, только после первичного квантификатора повторений (типа '+?' или '*?' или '??'), т.к. является ограничителем квантификатора повторений, а не выражения самого по себе.
Иначе (как и в данном случае) "?" будет обозначать квантификатор повторений "?"(выражение повторяется 0 или 1 раз).
Поправьте, если не так.

vedro-compota's picture

Кажется ленивый квантификатор обозначается знаком вопроса, только после первичного квантификатора повторений (типа '+?' или '*?' или '??'), т.к. является ограничителем квантификатора повторений, а не выражения самого по себе.
Иначе (как и в данном случае) "?" будет обозначать квантификатор повторений "?"(выражение повторяется 0 или 1 раз).
Поправьте, если не так.

Вы правы, раньше выше был текствыше было указано выражение:

Знак вопроса в регулярном выражении помогает сделать оператор более "ленивым"
"Ленивые" операторы находят самое короткое совпадение и на этом останавливаются
пример:

'%^(\w+)(/(\w+))?$%'

о частях выражения приведённого в качестве примера мы рассуждали здесь

действительно, последнем регулярном выражении:

'%^(\w+)(/(\w+))?$%'

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

_____________
матфак вгу и остальная классика =)