我有一个Jenkins构建,可以从另一个构建中复制一个工件。
使用description setter plugin我想提取我从中获取工件的内部版本号。
日志文件包含以下行:
Copied 1 artifact from "Mybuild" build number 569
我需要使用正则表达式来仅提取整数569
(可以是任何int)。此外,1
可以是任何int,Mybuild
可以是任何字符串(但没有空格,一个单词)。我可以假设单词Copied, artifact, from, build, number
是常量并始终显示
我试图匹配正则表达式,但没有运气。还尝试了一些正则表达式生成器网站,但也没有运气。
感谢。
答案 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