【发布时间】:2020-09-22 05:59:04
【问题描述】:
我正在尝试匹配列表中的数字值,并且正则表达式在 Jenkins 脚本控制台上运行良好,但是当我在管道中使用相同的代码时,我的代码返回 match 为 false
def tag = ["fork-point", "fork-3.0.1", "fork-3.0.0", "2.0.2", "2.0.1", "2.0.0", "1.0.1", "1.0.0"]
List<String> extractSubListUsingRegex( List<String> l) {
String regex = "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)"
List<String> subList = []
for (String tag in l) {
println tag
boolean isMatching = (tag ==~regex)
if (isMatching == true){
subList.add(tag)
}
}
return subList
}
println extractSubListUsingRegex(tag)
这是正则表达式 https://regex101.com/r/BvqB6e/1
【问题讨论】:
-
这里有几个可能的问题:
==~运算符是限制性精确匹配,==~运算符的 RHS 参数应该是正则表达式类家族中某处的对象类型,可能不是一个字符串。尝试将运算符更改为=~和/或将 RHS 更改为/^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)/。 -
谢谢@MattSchuchard,参数值是一个字符串,可以通过更改参数值来修复它。
标签: regex jenkins groovy jenkins-pipeline jenkins-declarative-pipeline