Я відповів на це запитання на SuperUser, що було щось пов’язане з видом регулярних виразів, що використовуються під час отримання виводу.
Я відповів:
tail -f log | grep "some_string.*some_string"
А потім, У трьох коментарях до моєї відповіді @Bob написав це:
.*
жадібний і може захопити більше, ніж ви хочете..*?
зазвичай краще.
Тоді це,
?
є модифікатором на*
, що робить його ледачим замість жодного по замовчуванням. Припускаючи, що PCRE.
Я погуглив PCRE
, але не міг зрозуміти, у чому сенс цього у моїй відповіді?
і нарешті це,
Я також повинен зазначити, що це регулярний вираз (греп, який виконує POSIX-регекс за замовчуванням), а не глобус оболонки.
Я знаю лише, що таке Regex і дуже базове використання його в команді grep. Отже, я не зміг отримати жоден із цих 3 коментарів, і маю на увазі ці питання:
- Які відмінності у використанні
.*?
проти.*
? - Що краще і за яких обставин? Наведіть приклади.
Також було б корисно розібратися в коментарях, якщо хто міг
ОНОВЛЕННЯ: Як відповідь на питання Чим Regex відрізняється від Shell Globs? @Kusalananda надав це посилання у своєму коментарі.
ПРИМІТКА. Якщо потрібно, будь ласка, прочитайте мою відповідь на це питання, перш ніж відповісти, щоб посилатися на контекст.
.*
проти .*?
. Питання "Різниця між регулярними виразами та глобусами оболонки" вже розглянуто на цьому веб-сайті.