我正在为一些正则表达式而苦苦挣扎。我正在编写一个 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
任何帮助将不胜感激。谢谢
我相信这会奏效:
((((?<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