在Groovy中使用带闭包的replaceAll

mec1mxoz  于 2022-10-06  发布在  Jenkins
关注(0)|答案(2)|浏览(145)

我有一些Groovy代码(实际上来自Jenkinsfile):

fileNew = fileOld.replaceAll("((D:)((.*)\\(.*))*)") {
                    it[0].replaceAll("D:", "/xxx/yyyy")
                    it[0].replaceAll("\\", "/")
            }
            writeFile file: 'my-output-file', text: fileNew

代码与fileOld.replaceAll中由模式标记的行正确匹配(如iprintln it[0]所示),但在写入的文件中没有替换。我怎么才能让它起作用呢?

31moq8wy

31moq8wy1#

从我在这里看到的文档来看,在replaceAll闭包中调用replaceAll是不起作用的。我认为您可能只需要执行两个单独的replaceAll调用,分别搜索"D:""\\\\"

r3i60tvu

r3i60tvu2#

我在摆弄一些不同的东西,也许用原来的replaceAll就可以了。

fileNew = fileOld.replaceAll("((D:)((.*)\\(.*))*)") {
     it[0] = it[0].replace("D:", "/xxx/yyyy")
     it[0].replace("\\", "/")
}

这对我来说很管用,但我不确定fileOld会是什么样子,所以我不得不猜测一下。

相关问题