grep --help
およびman grep
によると、パターンをデフォルトの代わりにPerl正規表現(正確にはPCRE)として解釈するために、-P
オプションを使用できます POSIX基本正規表現 (BRE)。
Perl言語では、パターンの解釈を調整するために、さまざまな修飾子を式に追加できます(の構文では/pattern/modifiers
)。
では、誰かがgrepのPerl正規表現に修飾子を追加するにはどうすればよいですか? grep -P "/^got.it$/ms" [FILE]
のようないくつかのバリエーションを試しましたが、検索結果が間違っていました。
ただし、PCREの解釈については、マニュアルで次のように指摘されています。
これは非常に実験的なものであり、grep -Pは実装されていない機能を警告する場合があります。
Grepツールが修飾子をまったくサポートしていない可能性はありますか?
ちなみに、修飾子の例である-i
オプションを使用すると、大文字と小文字を区別しないパターンマッチングを実行できることに気付きました。
PCREは文字通りPerlではありません。スタンドアロンのCライブラリlibpcreを使用します。 「PCREスタイル」は、libpcreに依存していなくても、同じ/類似のパターンを使用して正規表現を実装する他の言語を指すために使用されることもあります(grep
は実際のlibpcreを使用します)。
厳密に言えば、正規表現には実際には修飾子は含まれていません。1 それは単なるパターンです。一部の正規表現インターフェイス(Perlなど)では、パターンとともに修飾子を使用できます。 grep
はそうではありません。
パターンのセマンティクスに関しても いくつかの違い があります。繰り返しになりますが、実際にはPerlではなく、それに基づいたものであることに注意してください。
1.実際に パターン内 でない限り、これはgrep
で実行できます。例えば。 grep -P "(?i)foobar"
は、大文字と小文字を区別しない一致になります。