ログファイルに正確な単語をキャプチャしようとしています:
/Emergency|Critical|Error|BEA-000331/
問題は、たとえばError
キャプチャする必要があるが、これもキャプチャする場合ErrorUnable
です。宇宙で見たときだけ撮りたいです。また、私は探してBEA-000331
いますが、すべてBEA
がキャプチャされています。
ログファイルに正確な単語をキャプチャしようとしています:
/Emergency|Critical|Error|BEA-000331/
問題は、たとえばError
キャプチャする必要があるが、これもキャプチャする場合ErrorUnable
です。宇宙で見たときだけ撮りたいです。また、私は探してBEA-000331
いますが、すべてBEA
がキャプチャされています。
perl/ruby を使用している場合は、単語境界マーカー \b を追加して、単語境界でのみ一致させます。また、BEA-000331 を 1 つの単位として一致させる必要がある場合は、それを括弧に入れてみてください:-
/\b(Emergency|Critical|Error|(BEA-000331))\b/
使用\b
:
単語文字 (\w に一致するもの) と単語以外の文字 ([^\w] または \W に一致するもの) の間の位置、および最初の文字列の場合は文字列の先頭および/または末尾に一致しますおよび/または文字列の最後の文字は単語文字です。
'\bEmergency\b|\bCritical\b|\bError\b|\bBEA-000331\b'
使用しているツールに応じて、次のようなことができます。
grep -Ew 'Emergency|Critical|Error|BEA-000331' log
この-w
オプションは、パターンが単語全体のみに一致するように強制します。