1

正規表現に苦労しています。Splunkクエリを作成していますが、フィールドの1つは期間であり、テキストを置き換える必要があります。以下はサンプル値とその置き換えです。

value| replacement
01| 01 sec
01:02| 01 min 02 sec
01:02:03|01 hr 02 min 03 sec
01+02:03:04|01 day 02 hr 03 min 04 sec

どんな助けでもありがたいです。ありがとう

4

1 に答える 1

0

私はこれがうまくいくと信じています:

((((?<day>\d{2})\+)?(?<hr>\d{2}):)?(?<min>\d{2}):)?(?<sec>\d{2})

上記は .NET で正常に動作し、perl と 100% 互換性があるはずです (ドキュメントによると、splunk が使用するフレーバーです)。

「sec」、「min」などを自分で追加する必要がありますが、名前付きキャプチャを使用して数字だけを抽出できます (名前付きキャプチャが成功したかどうかをテストして、追加する量を決定できます)。

分解:

(
    (
        (
            (?<day>\d{2})\+   # day is optional, but req hr ('+' not captured)
        )?
        (?<hr>\d{2}):         # hr is optional, but req min (':' not captured)
    )?
    (?<min>\d{2}):            # min is optional, but req sec (':' not captured)
)?
(?<sec>\d{2})                 # sec is required
于 2013-02-20T22:51:01.863 に答える