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