问题描述
我正在尝试匹配列表中的数字值,并且正则表达式在Jenkins脚本控制台上工作正常,但是当我在管道中使用相同的代码时,我的代码返回的匹配结果为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
解决方法
问题在于正则表达式正在查找非字符串值,但参数输出值是字符串,因此失败。