1. ホーム
  2. regex

[解決済み】grepで欲張らないマッチを行うには?

2022-04-14 02:55:25

質問

最短のマッチをgrepしたいのですが、そのパターンは以下のようなものです。

<car ... model=BMW ...>
...
...
...
</car>

...は任意の文字で、入力が複数行になることを意味します。

解決方法は?

非貪欲な(または怠惰な)マッチを探しているのですね。正規表現で非貪欲なマッチを得るには、修飾子を使う必要があります。 ? の後に量詞をつけます。たとえば、次のように変更できます。 .*.*? .

デフォルトでは grep は非貪欲なモディファイアをサポートしません。 grep -P を使えば、Perlの構文が使えるようになります。