【问题标题】:regex exclude hit if text contains a second string match如果文本包含第二个字符串匹配,则正则表达式排除命中
【发布时间】:2014-06-23 18:26:39
【问题描述】:

我正在尝试通过日志文件搜索以查看是否出现任何警告,以便我可以使用 Jenkins 插件“文本查找器”在 Jenkins 管道中发出警告。

但是,如果字符串还包含 plms,我不希望在日志文件中点击字符串“CRIT”。

例如 我在日志文件中有以下文本:

<CRIT> 23-Jun-2014::10:57:13.649 Upgrade committed
<CRIT> 23-Jun-2014::10:57:13.703 no registration found for callpoint plmsView/get_next of type=external

我对第二行的警告不感兴趣,所以我在 Jenkins 的文本查找器中添加了以下正则表达式:

WARN|ERROR|<ERR>|/^(?=<CRIT>)(?=^(?:(?!plms).)*$).*$/

只有当字符串不包含 plms(即第一行)时,这应该会在 CRIT 上命中,但我在任何一行都没有命中。

我从这里得到代码:Combine Regexp

有人可以帮我纠正这个问题吗?谢谢!

【问题讨论】:

    标签: regex jenkins


    【解决方案1】:

    你应该使用这样的东西:

    WARN|ERROR|<ERR>|<CRIT>(?!.*?no registration found)
    

    更改no registration found 部分以匹配您要排除的&lt;CRIT&gt; 消息。

    此表达式也匹配以下行:

    <INFO> User WARNER registered
    

    所以你应该考虑使用类似的东西:

    ^(WARN|ERROR|<ERR>|<CRIT>(?!.*?no registration found))
    

    仅当标记位于行首时才匹配(相应地更改标记)。

    【讨论】:

      【解决方案2】:

      这应该适合你:

      ^<CRIT>(.(?!plms))*$
      

      Demo and explanation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-30
        • 1970-01-01
        • 2022-12-11
        • 2020-05-03
        • 2020-12-19
        • 2012-09-17
        • 1970-01-01
        相关资源
        最近更新 更多