0

我有一个 Jenkins 版本,它从另一个版本中复制了一个工件。

使用描述设置器插件,我想提取从中获取工件的内部版本号。

日志文件包含这一行:

Copied 1 artifact from "Mybuild" build number 569

我需要使用正则表达式来仅提取整数569(可以是任何 int)。也1可以是任何 int 并且Mybuild可以是任何字符串(但不能有空格,一个单词)。我可以假设这些词Copied, artifact, from, build, number是不变的并且总是出现

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

谢谢。

4

1 回答 1

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
于 2012-07-17T07:54:26.947 回答