regex - Jenkins Groovy 控制台日志上的构建后插件多行正则表达式

标签 regex groovy jenkins jenkins-plugins

我正在尝试使用 Jenkins 中的 groovy 后期构建插件创建多行正则表达式。我可以在普通的 Jenkins 脚本控制台中完成这项工作,但我在将其转换为后期构建插件时遇到了麻烦。

这是我想从控制台日志中获取的文本:

def string """
 TEST SUMMARY:
 [java]  ------------------------------------------------------------
 [java]       268 tests in 69 groups
 [java]       1 errors
 [java]       0 failures
"""

这行代码将与我在脚本控制台中的上面的代码相匹配:

def match = string =~ /(?ms)(TEST SUMMARY.*?failures)/

我已经使用后期构建插件尝试了一些方法,包括以下内容:

manager.logContains((?ms)(".*TEST SUMMARY:.*?failures"))

def log = manager.build.logFile
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

def log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

最佳答案

事实证明,该问题是一个拼写错误,导致正则表达式返回 0 个匹配项。作为引用,如果其他人需要这样做,正确的语法是:

def log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

从那里您可以提取匹配项,或者像我一样进一步解析匹配项:

def total = summary[0] =~ /\d+ tests/

关于regex - Jenkins Groovy 控制台日志上的构建后插件多行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23139654/

相关文章:

java - 如何从 Java 评估我自己的 Groovy 脚本?

java - 如何在 Eclipse 中通过远程 Java 应用程序调试来调试 Groovy 代码

git - "java.lang.Exception: None or multiple repos"在 Jenkins 多分支管道中使用 BitBucket Notifier

java - java中正则表达式的模式匹配

Java正则表达式

c# - 正则表达式获取我的文件的父目录在字符串文件路径中

jenkins - 为什么 Jenkins CLI 不能在我们的 Dev@Cloud 实例上运行?

java - 拆分表达式数组的字符串

javascript - 箭头函数是否具有像 Groovy Closure 一样的委托(delegate)属性

tomcat - 由于 Jenkins 屏幕上未显示经理凭据(构建后操作),Jenkins 作业失败