You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中编写正则表达式查找含“groovy”字符串文件的问题排查

正确查找含"groovy"文件名的Groovy实现方案

嘿,我来帮你搞定这个问题!你之前的代码没生效,是因为正则表达式的写法出了小问题,咱们一步步来修正:

先说说你原有代码的问题

你写的~/[groovy.]/是一个字符类正则,它只会匹配文件名里包含g、r、o、v、y或者.中任意单个字符的文件,而不是匹配完整的"groovy"字符串——这就是为啥它没法精准找到你要的文件啦。

方法一:用eachFileMatch配合正确的正则

直接把正则改成匹配任意位置出现"groovy"的模式就可以了,这里分两种场景:

场景1:忽略大小写匹配(比如匹配Groovy、GROOVY、groovy等)

def targetDir = new File("/你的目标文件夹绝对路径")
targetDir.eachFileMatch(~/.+groovy.+/i) { file ->
    println "找到匹配文件:${file.name}"
}

正则说明:

  • .+:匹配任意数量的任意字符(至少1个),用来覆盖"groovy"前后的内容
  • groovy:你要匹配的目标字符串
  • i:正则修饰符,表示忽略大小写,如果不需要可以去掉

场景2:严格区分大小写匹配

去掉i修饰符即可:

targetDir.eachFileMatch(~/.+groovy.+/){ file ->
    println "找到匹配文件:${file.name}"
}

方法二:用字符串判断替代正则(更直观易读)

如果你觉得正则有点绕,也可以直接用Groovy字符串的contains()方法,代码可读性更高:

严格区分大小写

def targetDir = new File("/你的目标文件夹绝对路径")
targetDir.eachFile { file ->
    if (file.name.contains("groovy")) {
        println "找到匹配文件:${file.name}"
    }
}

忽略大小写

targetDir.eachFile { file ->
    if (file.name.toLowerCase().contains("groovy")) {
        println "找到匹配文件:${file.name}"
    }
}

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:28:14