これこのページには、正規表現内の乗数に「?」を接尾辞として付けることで、非貪欲な検索を実行できると書かれています。しかし、grep でこれを機能させる方法がわかりません。
grep -E '^.*?$' file
テキスト全体を印刷します。
grep を使用して非貪欲な正規表現検索を行うにはどうすればよいでしょうか?
答え1
grep
PCRE (Perl 互換正規表現) サポートが必要です。たとえば、GNUgrep
にはこれがあり、オプションで活用できます。また、通常のパッケージで多くのシステムにインストールできる という-P
名前のスタンドアロン プログラムもあります。pcregrep
-E
トークンとの非貪欲な一致をサポートしていない ERE (拡張正規表現) を有効にすることに注意してください?
。
したがって、GNU を使用すると、grep
例えば次のことが可能になります。
grep -Po '^.*?foo' file
最初から最後まで一致(および抽出)しますfoo
。