Jenkins管道正则表达式模式不匹配

时间:2019-09-16 13:59:42

标签: regex git jenkins

当前有一个不寻常的问题,我正在遍历标签列表并针对正则表达式模式进行测试以查看其是否匹配。

def tags = sh ( script: "git ls-remote --tags git@bitbucket.org:<PATH_TO_GIT_REPO>.git ", returnStdout: true)
def tag_line = tags.split("\n")
tag_line.each
{
    tag ->
    // println(tag)
    current_tag = tag.split()[1].split("/")[2].trim()
    println("Current Line: " + current_tag)

    def major = (current_tag =~ /v.+\.\d+\.\d*/)
    println(major)

}

如果我使用正则表达式在线测试仪,则返回匹配项。但是无论我做什么,向控制台的输出如下:

Current Line: v1.9.0^{}
[Pipeline] echo
java.util.regex.Matcher[pattern=v.+\.\d+\.\d* region=0,9 lastmatch=]
[Pipeline] echo
Current Line: v1.9.1
[Pipeline] echo
java.util.regex.Matcher[pattern=v.+\.\d+\.\d* region=0,6 lastmatch=]

1 个答案:

答案 0 :(得分:2)

Exception ignored in: <function Capture.____del____ at ...> ... pyshark.capture.capture.TSharkCrashException: TShark seems to have crashed (retcode: 2) 属性为空,因为使用lastmatch行代码,您仅初始化了Matcher对象,但没有“运行”该对象。

要获取匹配项,您需要先运行它,例如,可以使用

def major = (current_tag =~ /v.+\.\d+\.\d*/)

如果您的正则表达式模式中有捕获组,请在if (major) { println major.group() } 内使用适当的ID。