Eu respondi a esta pergunta no SuperUser que era algo relacionado ao tipo de expressões regulares usadas durante o grep de uma saída.
A resposta que dei foi esta:
tail -f log | grep "some_string.*some_string"
E então, em três comentários à minha resposta , @Bob escreveu isto:
.*
é ganancioso e pode capturar mais do que você deseja..*?
geralmente é melhor.
Então isso,
o
?
é um modificador em*
, tornando-o preguiçoso em vez do padrão ganancioso. Assumindo PCRE.
Eu pesquisei por PCRE
, mas não consegui entender qual é o significado disso na minha resposta?
e finalmente isso,
Também devo apontar que isso é regex (grep fazendo POSIX regex por padrão), não um shell glob.
Eu só sei o que é um Regex e o uso muito básico dele no comando grep. Então, não consegui nenhum desses 3 comentários e tenho essas perguntas em mente:
- Quais são as diferenças no uso de
.*?
vs..*
? - Qual é melhor e em que circunstâncias? Forneça exemplos.
Também seria útil entender os comentários, se alguém pudesse
ATUALIZAÇÃO: Como resposta à pergunta Como o Regex é diferente do Shell Globs? @Kusalananda forneceu este link em seu comentário.
NOTA: Se necessário, leia minha resposta a esta pergunta antes de responder para se referir ao contexto.