Regex用于从Jenkins中的Copy artifacts插件中提取内部版本号

时间:2012-07-17 07:52:04

标签: regex jenkins jenkins-plugins

我有一个Jenkins构建,可以从另一个构建中复制一个工件。

使用description setter plugin我想提取我从中获取工件的内部版本号。

日志文件包含以下行:

Copied 1 artifact from "Mybuild" build number 569

我需要使用正则表达式来仅提取整数569(可以是任何int)。此外,1可以是任何int,Mybuild可以是任何字符串(但没有空格,一个单词)。我可以假设单词Copied, artifact, from, build, number是常量并始终显示

我试图匹配正则表达式,但没有运气。还尝试了一些正则表达式生成器网站,但也没有运气。

感谢。

1 个答案:

答案 0 :(得分:2)

你可以使用

Copied (\d+) artifact from "([^"]+)" build number (\d+)

然后使用第三组(或删除前两个捕获的令牌周围的括号并使用组号1)。

\d指的是任何十进制数字,+尾随它是一个所谓的量词,它将尝试匹配前一个令牌(在这种情况下为数字)至少一次,尽可能多次。 [^"]是一个包含任何不是双引号的字符的字符类。通过这种方式,我们可以确保我们捕获引号内的所有内容(这里不是必需的,但要记住一个好的模式)。所有其余部分只是逐字匹配。

快速PowerShell测试:

PS> 'Copied 1 artifact from "Mybuild" build number 569' -match 'Copied (\d+) artifact from "([^"]+)" build number (\d+)'
True
PS> $Matches

Name                           Value
----                           -----
3                              569
2                              Mybuild
1                              1
0                              Copied 1 artifact from "Mybuild" build number 569