Regex readlines()中的Groovy正则表达式匹配列表

Regex readlines()中的Groovy正则表达式匹配列表,regex,groovy,readlines,Regex,Groovy,Readlines,我试图读取文本文件并返回所有不以#开头的行。在python中,我可以很容易地使用列表理解列表 with open('file.txt') as f: lines = [l.strip('\n') for l in f.readlines() if not re.search(r"^#", l)] 我希望通过Groovy完成同样的事情。到目前为止,我有下面的代码,非常感谢任何帮助 lines = new File("file.txt").readLines().findAll({x -

我试图读取文本文件并返回所有不以#开头的行。在python中,我可以很容易地使用列表理解列表

with open('file.txt') as f:
     lines = [l.strip('\n') for l in f.readlines() if not re.search(r"^#", l)]
我希望通过Groovy完成同样的事情。到目前为止,我有下面的代码,非常感谢任何帮助

lines = new File("file.txt").readLines().findAll({x -> x ==~ /^#/ })

在groovy中,通常必须使用
collect
来代替列表理解。例如:

new File("file.txt").readLines().findAll({x -> x ==~ /^#/ }).
    collect { it.replaceAll('\n', '') }
请注意,
readLines()
已经去掉了换行符,因此在本例中没有必要这样做

要进行搜索,还可以使用
grep()
方法:

new File('file.txt').readLines().grep(~/^#.*/)

那不行吗?您可能需要将findAll闭包更改为
{x->!x.startsWith('#')}
tim_-yates-
lines=new File(masterManifest).readLines().findAll({x->!x.startsWith('#')})
工作正常。谢谢