replace()

replace()関数は、対象文字列内の指定したパターンを検索し、置換文字列に置き換えます。デフォルトではリテラル文字列のマッチングを行い、フラグを"re"に指定すると正規表現パターンで置換します。

構文

replace(TARGET, PATTERN, REPLACEMENT[, FLAG])

パラメーター

TARGET
置換処理を行う元の文字列フィールドまたは値です。
PATTERN
検索するパターン文字列です。FLAG"re"の場合は正規表現として解釈されます。
REPLACEMENT
一致したパターンを置き換える文字列です。nullの場合は空文字列として処理されます。
FLAG
(省略可)"re"を指定するとPATTERNを正規表現として解釈して置換します。

説明

replace()関数は、TARGET文字列内のPATTERNに一致するすべての部分をREPLACEMENTに置き換えた結果文字列を返します。

  • TARGETnullの場合はnullを返します。
  • PATTERNnullの場合はTARGETをそのまま返します。
  • REPLACEMENTnullの場合は空文字列("")に置き換えます。
  • FLAGを省略するか"re"以外の値を指定した場合はリテラル文字列マッチングとして動作します。
  • FLAG"re"の場合はjava.util.regex.Patternを使用して正規表現の全置換(replaceAll)を実行します。

エラーコード

該当なし

使用例

これらの使用例で参照するWEB_APACHE_SAMPLEテーブルを準備するには、クエリ実習用データを参照してください。

  1. URIから特定パスのプレフィックスを削除

    table limit=5 WEB_APACHE_SAMPLE | eval result = replace(uri, "/archives/", "/") | fields uri, result
    
  2. 正規表現パターンでURIの数値IDをマスキング

    table limit=5 WEB_APACHE_SAMPLE | eval result = replace(uri, "[0-9]+", "{id}", "re") | fields uri, result
    | # result: "/archives/{id}" など
    
  3. 正規表現キャプチャグループの置換

    json "{'s': 'A:2 B:3 C:5'}" | eval result = replace(s, "A:(\\d+) B:\\d+ C:(\\d+)", "$1 $2", "re")
    | # result: "2 5"
    
  4. NULL入力

    json "{'msg': null}" | eval result = replace(msg, "world", "logpresso")
    | # result: null
    

互換性

replace()関数は、Sonar 4.0以前のバージョンから提供されています。