正则部分无法在邮件中提取内容,求助从Jenkins构建日志提取指定信息
Jenkins日志提取问题:BUILD_LOG_REGEX无法匹配统计块的解决方案
问题根源
你当前使用的正则表达式^.*?======================================================.*?$存在模糊匹配的问题,.*?可能会匹配到分隔线以外的内容,或者因为Jenkins基于Java的正则引擎对锚点^/$的严格匹配规则,导致无法精准定位到目标分隔线。
修复方案
1. 使用精准匹配的正则表达式
目标分隔线是50个连续的等号,直接写死匹配规则,避免模糊匹配:
<div class="container-info"> <pre style="COLOR: #8B0000; ">${BUILD_LOG_REGEX,regex="^={50}$",linesAfter=3, maxMatches=1, showTruncatedLines=false}</pre> </div>
- 替换
<span>为<pre>标签,能保留提取内容的原始换行格式,避免统计信息在邮件里挤成一团。 ^={50}$严格匹配单独一行的50个等号,不会误匹配其他包含等号的行。
2. 兼容带空白字符的分隔线
如果日志里的分隔线前后有空格、制表符或换行符,调整正则匹配前后的空白:
<div class="container-info"> <pre style="COLOR: #8B0000; ">${BUILD_LOG_REGEX,regex="^\s*={50}\s*$",linesAfter=3, maxMatches=1, showTruncatedLines=false}</pre> </div>
\s*匹配任意数量的空白字符(包括空格、制表符、换行),适配日志格式的微小差异。
3. 适配带前缀的分隔线
如果分隔线前有日志前缀(比如时间戳、日志级别),需要把前缀也加入正则,例如日志格式为:
[2024-05-20 10:00:00] ======================================================
对应的正则要改成:
<div class="container-info"> <pre style="COLOR: #8B0000; ">${BUILD_LOG_REGEX,regex="^\[.*?\]\s*={50}$",linesAfter=3, maxMatches=1, showTruncatedLines=false}</pre> </div>
测试建议
在Jenkins的「构建日志」页面,手动搜索={50},确认目标分隔线的格式是否和正则匹配,再调整邮件模板中的配置。
内容的提问来源于stack exchange,提问作者bhagwan
相关产品推荐
相关产品推荐

