我正在努力争取一些正则表达式。我正在写一个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
任何帮助将不胜感激。感谢
答案 0 :(得分: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