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
相关产品推荐
相关产品推荐

