1

我正在为一些正则表达式而苦苦挣扎。我正在编写一个 splunk 查询,其中一个字段是持续时间,我需要进行一些文本替换。以下是示例值及其替换。

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 回答