多尾正则表达式不起作用

多尾正则表达式不起作用

colorscheme我正在尝试使用 multitail 为我编写的程序的一些日志文件着色。我已经在其中创建了自己的程序,/etc/multitail.conf并且能够为与单个单词匹配的非常简单的正则表达式着色。但是,我无法让更复杂的正则表达式工作:

(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+[Zz]?)

此正则表达式应该匹配从 Javascript Date.toISOString() 调用返回的 ISO 日期字符串。在多个网站 (regexp.com、regextester.com) 上测试此正则表达式时,它确实与我的日志文件中的时间戳匹配。然而,当我运行 时multitail -cS express /my/log/file,简单的单词 regex 有效,但时间戳无效。

/etc/multitail.conf以下是我的文件的相关部分:

# express-proxy logs
colorscheme:express:express-proxy log files
cs_re:red:(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+[Zz]?) # This does not
cs_re:yellow:Headers # This works fine

为什么它无法识别我的有效正则表达式?我是否需要以某种方式转义一个或两个值?

多尾 v6.4.2,Ubuntu 20.04 WSL2

示例日志文件:

2022-06-10T11:46:55.608Z | info | Incoming Request:
        Client Address: ::1
        Target-URL:     https://www.uuidtools.com/api/generate/v5/namespace/ns:url/name/JohnLCarveth
        method:         GET
        Request Body:   {}
        Headers:        {"target-url":"https://www.uuidtools.com/api/generate/v5/namespace/ns:url/name/JohnLCarveth","user-agent":"PostmanRuntime/7.29.0","accept":"*/*","postman-token":"e680d0ad-a9c9-4348-a3ea-dede02a043e6","host":"localhost:3069","accept-encoding":"gzip, deflate, br","connection":"keep-alive"}
2022-06-10T11:46:55.783Z | info | Request Response
Status Code:    200
Elapsed Time:   175.78ms
Response Body:  ["33ceb1c7-8ece-530f-b53a-006f4a32348f"]

答案1

正则表达式正确,但\d无法识别符号multitail\d用替换[0-9]应该有效。

(PS:不知道为什么\d无法识别。这在其他程序中也发生过。有人知道吗?)

相关内容