Regex Jenkins Groovy编译后插件控制台日志上的多行正则表达式

Regex Jenkins Groovy编译后插件控制台日志上的多行正则表达式,regex,groovy,jenkins,jenkins-plugins,Regex,Groovy,Jenkins,Jenkins Plugins,我正在尝试使用Jenkins中的groovy后期构建插件创建一个多行正则表达式。我可以在正常的Jenkins脚本控制台中实现这一点,但是我在将其转换为构建后插件时遇到了困难 下面是我想从控制台日志中获取的文本: def string """ TEST SUMMARY: [java] ------------------------------------------------------------ [java] 268 tests in 69 groups [java]

我正在尝试使用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)/
我已经尝试了使用post build插件的一些方法,包括:

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


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

def log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/
从那里,您可以提取匹配项,或者像我的情况一样,进一步解析匹配项:

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

只是好奇,为什么不使用
manager.getLogMatcher()
def log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/
def total = summary[0] =~ /\d+ tests/