正则表达式的监视语法在做什么?

时间:2018-09-04 10:25:41

标签: linux monit

在我的monitrc中,我写了下一个:

check file mysite.com-access.log with path /var/log/apache2/mysite.com-access.log
        if content = "\/1.[01]\" 4(\d){2}" then alert

但是 systemctl状态monit.service 说我的语法有误:

extsites monit[19043]:  * Starting daemon monitor monit
extsites monit[19043]: /etc/monit/monitrc:305: syntax error '\d'
extsites monit[19043]:    ...fail!

我之前放过"\/1.[01]\" [45](\d){2}",但是语法错误是'[45]'。

我在做什么错?我所有的正则表达式都在https://regex101.com/中。

更新: 我将字符串更正为if content = "^\/1\.[01]\" [45](\d){2}" then alert 但是仍然存在语法错误。

2 个答案:

答案 0 :(得分:0)

我没错,monit使用POSIX regex语法。

因此,遵循以下描述:https://www.regular-expressions.info/posixbrackets.html
...您可以将\d替换为[:digit:]

这对我来说不合逻辑,但monit可能无法正确显示“ \ d”

在monit文档中的"content"-examples之后,双引号应该不是问题

答案 1 :(得分:0)

似乎我们应该使用单引号而不是双引号。