我在使用正则表达式的 monit 语法中做错了什么?
What am I doing wrong in monit syntax with regex?
在我的 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
但语法错误仍然存在。
当我正确时,monit 使用 POSIX 正则表达式语法。
所以按照这个描述:https://www.regular-expressions.info/posixbrackets.html
...您可以将 \d
替换为 [:digit:]
这对我来说不合逻辑,但也许 monit 没有得到正确的“\
d”
遵循 monit 文档中的 "content"-examples,双引号应该不是问题所在
看来我们应该使用单引号而不是双引号。
在我的 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
但语法错误仍然存在。
当我正确时,monit 使用 POSIX 正则表达式语法。
所以按照这个描述:https://www.regular-expressions.info/posixbrackets.html
...您可以将 \d
替换为 [:digit:]
这对我来说不合逻辑,但也许 monit 没有得到正确的“\
d”
遵循 monit 文档中的 "content"-examples,双引号应该不是问题所在
看来我们应该使用单引号而不是双引号。