regex

regexコマンドを使用して、指定した正規表現に従ってデータをフィルタします。

構文

ノート

regexなどの文字列処理コマンドは、リソースを大量に消費します。このため、多数のログ・レコードに対してregexコマンドを実行するか、大きいフィールド値はお薦めしません。かわりに、ログ・ソースの拡張フィールド定義(EFD)またはラベルを使用してこれらの値を抽出します。

パフォーマンスの高い正規表現問合せを記述する場合は、RE2のJava実装RE2J構文を参照してください。

regex <field> [=|!= <regular expression>] | [IN | NOT IN (<regular expression> [(,<regular expression>)*])]

パラメータ

次の表に、このコマンドで使用されるパラメータとその説明を示します。

パラメータ 説明

field

分析するフィールドを指定します。

regular expression

正規表現を指定します。

いくつかの正規表現問合せの例を実行するために、エンティティの名前を表している次のサンプル・レコードのセットを考えます:

slc07cuc
slc07ptt
slc07ptt:8452
stuyb43
stuyb43:1831
フィルタ要件 regexコマンドの例 検索結果
.を使用して1個の文字を表すには * | regex 'entity' = 'slc07ptt:845.'|distinct entity slc07ptt:8452
文字+を使用して1個以上の一致を検出するには * | regex 'entity' = 'slc07ptt.+'|distinct entity slc07ptt:8452
文字*を使用して0個以上の一致を検出するには * | regex 'entity' = 'slc07ptt.*'|distinct entity slc07ptt

slc07ptt:8452

ワイルドカード文字?を使用して0個または1個の一致を検出するには * | regex 'entity' = 'slc07ptt?'|distinct entity slc07ptt
問合せからの最小および最大の結果を指定するには * | regex 'entity' = 'slc07p{1,2}'|distinct entity slc07ptt

slc07ptt:8452

特定の文字の代替オプションを指定するには * | regex 'entity' = 'slc07pt(T|t)'|distinct entity slc07ptt
~文字を使用して補完を指定するには * | regex 'entity' = 'slc~c'|distinct entity slc07cuc
間隔オプション<>を使用して数値範囲を指定するには * | regex 'entity' = 's.*<1-43>.*'|distinct entity stuyb43

stuyb43:1831

2つのパターンが両方とも一致するように結合するには、共通部分オプション&を使用します * | regex 'entity' = '.*43&.*tu.'|distinct entity stuyb43

stuyb43:1831

@オプションを使用して文字列全体を一致させるには * | regex 'entity' = '@'|distinct entity slc07cuc

slc07ptt

slc07ptt:8452

stuyb43

stuyb43:1831

不等価文字!=を使用し、特定のオプションを除外してレコードを検索するには * | regex 'entity' = 'slc07.+'|distinct entity stuyb43

stuyb43:1831

文字2および5を含むレコードを検索するには、ブール式INを指定します * | regex 'entity' in ('.*2.*', '.*5.*')|distinct entity slc07ptt:8452
文字1および2を含まないレコードを検索するには、ブール式NOT INを指定します * | regex 'entity' not in ('.*1.*', '.*2.*')|distinct entity slc07cuc

slc07ptt

stuyb43

複数の正規表現問合せを指定するには * | regex 'entity' = '[^1]+' | regex 'entity' = '[^5]+' |distinct entity slc07cuc

slc07ptt

stuyb43

オプション^を使用し、1から6までの文字の存在を否定する文字クラスを指定してレコードを検索するには * | regex 'entity' = 'slc0[^1-6].*' |distinct entity slc07cuc

slc07ptt

3から8までの文字の存在に対応する文字クラスを指定してレコードを検索するには * | regex 'entity' = 'slc0[3-8].*' |distinct entity slc07cuc

slc07ptt

文字1または2の存在に対応する文字クラスを指定してレコードを検索するには * | regex 'entity' = 's.*[12].*'|distinct entity slc07ptt:8452

stuyb43:1831