regex - 来自 readlines() 的 Groovy 正则表达式匹配列表

标签 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 -> x ==~ /^#/ })

最佳答案

在groovy中,一般要使用collect代替列表理解。例如:

new File("file.txt").readLines().findAll({x -> x ==~ /^#/ }).
    collect { it.replaceAll('\n', '') }

请注意 readLines()已经去掉了换行符,所以在这种情况下没有必要。

对于搜索,您还可以使用 grep()方法:
new File('file.txt').readLines().grep(~/^#.*/)

关于regex - 来自 readlines() 的 Groovy 正则表达式匹配列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512867/

相关文章:

groovy - Groovy 脚本中 $0 相当于什么?

grails - Grails日期约束

groovy - 不正确的 getter 的 groovy 问题

java - 使用正则表达式在字符串中查找子字符串

ruby - 如何在 ruby​​ 中使用正则表达式和 .sub 覆盖 txt 文件中的部分行

regex - 模糊正则表达式

python - 在 python 中使用 readlines 时忽略 last\n

python - readlines 给了我额外的换行符 python2.6.5

java - 如何在此程序中仅使用两个字符串?

javascript - 这个正则表达式可以更有效吗?