web-dev-qa-db-ja.com

grepで貪欲でない正規表現を使用する方法は?

This ページには、正規表現内の任意の乗数に「?」という接尾辞を付けることができると記載されています。欲張りでない検索を行うため。ただし、grepで機能させる方法がわかりません。

grep -E '^.*?$' file

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

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

1
saga

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

-Eは、?トークンとの貪欲でないマッチングサポートを持たないERE(拡張正規表現)を有効にすることに注意してください。

したがって、GNU grepを使用すると、次のように実行できます。

grep -Po '^.*?foo' file

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

2
heemayl