将Regexp转换为POSIX BRE
我想把这个表达式放到POSIX BRE中将Regexp转换为POSIX BRE,regex,logging,scom,Regex,Logging,Scom,我想把这个表达式放到POSIX BRE中 HTTP\/[\d.]+.\s+(?:403)\s+(4[0-9])\s+ 这是我到目前为止的想法 HTTP\/[0-9.]{1,}.[[:blank:]]{1,}403[[:blank:]]{1,}(4[0-9])[[:blank:]] 使用基于web的正则表达式检查器,这两个示例都非常有效。 但是,这个regexp需要在SCOM中注册,而且它似乎只支持POSIX BRE来监视Linux服务器。以下是有关的POSIX文档。请特别注意: 当匹配单个字
HTTP\/[\d.]+.\s+(?:403)\s+(4[0-9])\s+
这是我到目前为止的想法
HTTP\/[0-9.]{1,}.[[:blank:]]{1,}403[[:blank:]]{1,}(4[0-9])[[:blank:]]
使用基于web的正则表达式检查器,这两个示例都非常有效。
但是,这个regexp需要在SCOM中注册,而且它似乎只支持POSIX BRE来监视Linux服务器。以下是有关的POSIX文档。请特别注意:
\{m\}
、\{m,\}
或\{m,n\}
的区间表达式时,以及该区间表达式,它应匹配BRE重复连续出现的匹配内容[[:blank:]{1,}
不会做你认为会做的事;大括号前面需要加反斜杠
另一方面,大多数BRE实现允许您使用\+
来表示“一次或多次重复”。至少,BSD和Gnu品种确实如此。因此,您可能可以将其编写为[[:blank:]\+
,而不是使用数字重复运算符[[:blank:]\{1,\}
最后,[[:blank:]
可能不是您想要的。至少,它与\s
不匹配<代码>[[:blank:]只匹配空格和制表符([\t]
)。但在大多数正则表达式库中,\s
与[\t\r\n\f\v]
相同,这与C正则表达式中的[[:space:]
匹配(或通过C代码中的isspace()
函数匹配)。[[:blank:][]
和\s
(或[:space:][]
)之间最明显的区别是[:blank:][]
与换行符不匹配。也许在你的申请中可以
迂腐的注释:一些正则表达式库将
\s
定义为[\t\r\n\f]
,但您不太可能注意到其中的区别。所有这些字符列表都假定正则表达式是在“C”语言环境中编译的。如果正则表达式库具有区域设置意识,并且启用了其他一些区域设置,则可能会匹配其他字符。感谢您的澄清。我应该提到,SCOM Linux代理正在监视nginx日志文件中的HTTP/1.1“403 48部分(其中错误代码403后面的数字是一个介于40-49之间的两位数)sometext HTTP/1.1“403 48”-“sometext”也(
和)
需要反斜杠,另一方面,不需要反斜杠/
(例如,除非您的工具在宿主语言的语法中使用文本斜杠作为正则表达式delmiter)。