【问题标题】:regex is not is not matching value in Jenkins pipeline正则表达式不是 Jenkins 管道中的不匹配值
【发布时间】: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


【解决方案1】:

问题是正则表达式正在寻找非字符串值,但参数输出值是字符串,因此失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-07
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多