J'ai répondu à cette question sur SuperUser qui était liée au type d'expressions régulières utilisées lors de la réception d'une sortie.
La réponse que j'ai donnée était la suivante:
tail -f log | grep "some_string.*some_string"
Et puis, en trois commentaires à ma réponse @Bob a écrit ceci:
.*
est gourmand et peut capturer plus que vous ne le souhaitez..*?
est généralement mieux.
Ensuite ceci,
l'
?
est un modificateur sur*
, ce qui rend paresseux au lieu de la valeur par défaut gourmand. En supposant PCRE.
J'ai cherché sur Google PCRE
, mais je n'ai pas pu comprendre quelle est la signification de cela dans ma réponse?
et enfin ça,
Je dois également souligner qu'il s'agit d'expressions régulières (grep exécutant des expressions régulières POSIX par défaut), et non d'un shell global.
Je sais seulement ce qu'est un Regex et son utilisation très basique dans la commande grep. Donc, je n'ai pu obtenir aucun de ces 3 commentaires et j'ai ces questions à l'esprit:
- Quelles sont les différences d'utilisation de
.*?
vs.*
? - Quel est le meilleur et dans quelles circonstances? Veuillez fournir des exemples.
Il serait également utile de comprendre les commentaires, si quelqu'un pouvait
MISE À JOUR: En réponse à la question En quoi Regex diffère-t-il des Shell Globs? @Kusalananda a fourni ce lien dans son commentaire.
REMARQUE: Si nécessaire, veuillez lire ma réponse à cette question avant de répondre pour vous référer au contexte.
.*
vs. .*?
La question "différence entre expressions régulières et globes shell" a déjà été abordée sur ce site.