grep で非貪欲正規表現を使用するにはどうすればいいですか?

grep で非貪欲正規表現を使用するにはどうすればいいですか?

これこのページには、正規表現内の乗数に「?」を接尾辞として付けることで、非貪欲な検索を実行できると書かれています。しかし、grep でこれを機能させる方法がわかりません。

grep -E '^.*?$' file

テキスト全体を印刷します。

grep を使用して非貪欲な正規表現検索を行うにはどうすればよいでしょうか?

答え1

grepPCRE (Perl 互換正規表現) サポートが必要です。たとえば、GNUgrepにはこれがあり、オプションで活用できます。また、通常のパッケージで多くのシステムにインストールできる という-P名前のスタンドアロン プログラムもあります。pcregrep

-Eトークンとの非貪欲な一致をサポートしていない ERE (拡張正規表現) を有効にすることに注意してください?

したがって、GNU を使用すると、grep例えば次のことが可能になります。

grep -Po '^.*?foo' file

最初から最後まで一致(および抽出)しますfoo

関連情報