提问人:Hemant Kumar 提问时间:8/6/2019 最后编辑:cfrickHemant Kumar 更新时间:2/16/2023 访问量:6420
如何在 Groovy 中将列表与正则表达式进行匹配
How to match a list against a regular expression in Groovy
问:
我有一个列表如下:
list1 = ["README.md", "test1.txt", "/desktop/openmpi.txt"]
我想从此列表中过滤掉所有带有扩展名的文件,并将结果作为布尔值返回给我。因此,如果此列表包含任何或文件,则返回 true,如果没有,则返回 false。.md
.txt
.md
.txt
我正在尝试匹配器类实现,但它不起作用。我不确定我怎样才能一次性列出一个列表。
我的预期结果是:
True
:如果列表包含任何文件或文件。.md
.txt
False
:如果列表不包含任何 or 文件。.md
.txt
答:
14赞
Wiktor Stribiżew
8/6/2019
#1
您可以使用 any
来查看列表中是否有与正则表达式匹配的项目:/(?i)\.(?:md|txt)$/
def list1= ["README.md", "test1.txt","/desktop/openmpi.txt"]
print(list1.any { it =~ /(?i)\.(?:md|txt)$/ } )
返回。true
在线观看 Groovy 演示。
正则表达式匹配(?i)\.(?:md|txt)$
(?i)
- 打开不区分大小写\.
- 一个点(?:md|txt)
- 非捕获组匹配 或md
txt
$
- 字符串的结尾。
评论
0赞
Hemant Kumar
8/6/2019
但另一种情况是,如果除了这两个扩展名(如 .sh 或 .mp3)之外,我还有其他文件,那么在这种情况下我想返回“false”。这意味着仅当此列表只有 .md 和 .txt 文件而没有其他文件时,我才想返回 true。
1赞
Wiktor Stribiżew
2/16/2023
@nhed链接已更新。
评论