[closed] Простой вопрос по ленивым квантификаторам в grep

Volshebnaya

Почему-то не работают ленивые квантификаторы в grep 2.5.3.
Создаю файл: echo '<b>test</b>' > a.dat
Ищу жадным образом выражение в угловых скобках: cat a.dat | egrep -o \<.*\>
Он выдает в ответ, как положено, <b>test</b>
Пытаюсь искать ленивым образом: cat a.dat | egrep -o \<.*?\> - и вместо ожидаемых <b> и </b> он выдает тот же результат, как и при жадном поиске. В чем дело? Или в grep ленивые квантификаторы как-то по-другому задаются, и если да, то где бы почитать спек на предмет того, что еще в grep не соответствует классике?

hwh2010

а ты уверен, что в extended posix regexp есть greedy-модификатор "?"

Volshebnaya

нет, не уверен, в мануале сказано только про значение "?"="необязательное вхождение" в расширенных регэкспах.
но как вообще заставить grep (хоть в какой-то его форме) выполнять ленивый поиск?

apl13

Я бы, конечно, вместо "\<.*\>" написал "\<[^>]*\>", но это же не общее решение...

Volshebnaya

сойдет, спасибо)
а вообще еще оказалось, что можно было запускать с опцией -p (означающей режим интерпретации регекспа как регекспа на Perl) и тогда ленивость включалась
Оставить комментарий
Имя или ник:
Комментарий: