【发布时间】:2021-06-06 10:10:01
【问题描述】:
我是 nextflow/groovy/java 的新手,我在执行一个简单的正则表达式任务时遇到了一些困难。
我正在尝试更改某些文件对的标签。
据我了解fromFilePairs返回的数据结构如下:
[
[common_prefix, [file1, file2]],
[common_prefix, [file3, file4]]
]
我进一步认为:
- 在此列表中的项目上调用
.name方法将给出名称,我在上面标记为common_prefix - 与
fromFilePairs一起使用的闭包返回的值设置文件对的名称。 - 与
fromFilePairs一起使用的闭包中it的值是文件对列表中的一项。
但是,我在以下方面尝试了许多变体,但均未成功:
params.fastq = "$baseDir/data/fastqs/*_{1,2}_*.fq.gz"
Channel
.fromFilePairs(params.fastq, checkIfExists:true) {
file ->
// println file.name // returned the common file prefix as I expected
mt = file.name =~ /(common)_(prefix)/
// println mt
// # java.util.regex.Matcher[pattern=(common)_(prefix) region=0,47 lastmatch=]
// match objects appear empty despite testing with regexs I know to work correctly including simple stuff like (.*) to rule out issues with my regex
// println mt.group(0) // #No match found
mt.group(0) // or a composition like mt.group(0) + "-" + mt.group(1)
}
.view()
我还使用replaceAll 方法尝试了一些变体。
我已经查阅了 nextflow、groovy 和 java 的文档,但我仍然无法弄清楚我缺少什么。我希望这是一些愚蠢的句法或对数据结构的误解,但是当这对于更了解该语言的人来说可能很明显时,我已经厌倦了用头撞它-我会很感激任何能启发我了解它是如何工作的人.
【问题讨论】:
标签: java regex groovy regex-group nextflow