Java Jenkins日志解析器规则

Java Jenkins日志解析器规则,java,regex,jenkins,logparser,Java,Regex,Jenkins,Logparser,我使用作为生成后步骤来检查生成后的错误 我将所有规则都保存在一个文件中,该符号支持Java regex嵌入式标志表达式: # list keywords or regex for ERRORS: error /(?i)error/ error / (?i)error/ error /(?i)error / error / (?i)error / error /(?i)error:/ error / (?i)error:/ error /(?i)error: / error / (?i)erro

我使用作为生成后步骤来检查生成后的错误

我将所有规则都保存在一个文件中,该符号支持Java regex嵌入式标志表达式:

# list keywords or regex for ERRORS:
error /(?i)error/
error / (?i)error/
error /(?i)error /
error / (?i)error /

error /(?i)error:/
error / (?i)error:/
error /(?i)error: /
error / (?i)error: /

error /Unknown database/
error /Connect failed/
error /(?i)undefined/
error /Call Stack:/



# list keywords or regex for WARNINGS:
warning /(?i)^warning/
warning /(?i)warning/
warning /(?i)warning:/
我的问题是我不太擅长正则表达式,每当它遇到一个包含“error”的单词时,就会触发一个警报。例如:T**error**或Biot**error**(我知道这可能来自我的错误表达,但如果我将“Bioterror”或“TRORM”标记为警告,它仍然会将它们作为错误覆盖并触发警报)

我的问题是:

  • 排除我定义的某些单词的正确方法是什么

  • 这是可以实现的吗?(我认为这就是插件的工作方式,因为如果我将必要的单词标记为警告,它仍然会将它们突出显示为错误)


  • 您需要的是一个单词边界锚,在大多数正则表达式中是
    \b
    。它的宽度为零,所以它不匹配任何字符,只是从非单词字符切换到单词字符

    所以你的对手会变成:

    错误/(?i)\berror\b/


    一个正则表达式可以处理所有看起来像您试图单独处理的情况:前后空格、后冒号等等。

    谢谢@Brian,我已经测试过了,它可以正常工作。也非常感谢您让我知道冗余表达式。如果您对regexp有问题,请尝试在一个在线regex页面中构建您的表达式。或