web-dev-qa-db-ja.com

grepでPerl互換正規表現(PCRE)の修飾子を使用する

grep --helpおよびman grepによると、パターンをデフォルトの POSIX基本正規表現 (BRE)の代わりにPerl正規表現(正確にはPCRE)として解釈するために-Pオプションを使用できます。

Perl言語では、パターン解釈を調整するために、さまざまな修飾子を式に追加できます(/pattern/modifiersの構文で)。

だから、誰かがgrepのPerl正規表現に修飾子をどのように追加できますか? grep -P "/^got.it$/ms" [FILE]のようなバリエーションを試しましたが、検索結果が間違っていました。

ただし、PCREの解釈については、マニュアルで次のように指摘されています。

これは非常に実験的であり、grep -Pは実装されていない機能について警告する場合があります。

Grepツールが修飾子をまったくサポートしない可能性はありますか

ところで、修飾子の例である-iオプションを使用すると、大文字と小文字を区別しないパターンマッチングを実行できることに気付きました。

20
Reflection

修飾子imsxadlupには、 拡張パターン で説明されているように(?X)を使用できます。

$ echo FOO | grep -P '(?i)foo'
FOO
17
Florian Diesch