regex - 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=]
解决方案
该lastmatch
属性为空,因为使用这def major = (current_tag =~ /v.+\.\d+\.\d*/)
行代码您只初始化了 Matcher 对象,但没有“运行”它。
要获得匹配,您需要先运行它,您可以这样做,例如,使用
if (major) {
println major.group()
}
如果您的正则表达式模式中有一个捕获组,请在group()
.
推荐阅读
- python - 获取类型错误:|= 的不支持的操作数类型:尝试运行脚本时出现“str”和“bool”消息
- multithreading - 具有 CompletableFutures 的异步非阻塞任务
- javascript - Jquery SmartWizard 添加额外按钮
- python - 在 SublimeText 3 中请求 ImportError
- sql - 在 SQL 中滚动 12 个月递减
- neo4j - Neo4j 中的 MERGE 相关节点
- spring - Spring MVC 测试 - 需要多部分 POST json originalFilename
- .net - Azure Function 是否可以由事件触发,然后按计划开始运行?
- angular - 我如何在 Angular 中使用 foxTooltip?
- laravel-5 - 复选框的旧数据