Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Regexp转换为POSIX BRE_Regex_Logging_Scom - Fatal编程技术网

将Regexp转换为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文档。请特别注意: 当匹配单个字

我想把这个表达式放到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文档。请特别注意:

  • 当匹配单个字符、子表达式或反向引用的BRE后跟格式为
    \{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)。