我使用Jenkins Log Parser Plugin作为构建后步骤来检查构建后的错误
我将所有规则都放在一个文件中,并且该表示法支持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:/
我的问题是我对正则表达式不太好,每次遇到包含"错误"它会触发警报。例如:T **错误**或Biot **错误**(我知道它可能来自我的坏表达,但如果我标记" Bioterror"或" Terror" as警告,它仍然会将它们覆盖为错误并触发警报)。
我的问题是:
排除我定义的某些字词的正确方法是什么?
这是可以实现的吗? (我认为这是插件的工作方式,因为如果我将必要的单词标记为警告,它仍会将其突出显示为错误)
答案 0 :(得分:3)
你想要的是一个词边界锚,在大多数正则表达式中都是\b
。它是零宽度,因此它不匹配任何字符,只是从非字符到字符的切换。
所以你的比赛将成为:
error /(?i)\berror\b/
一个正则表达式处理你试图单独处理的所有情况:前后空格,后面冒号等等。