Groovy中获取路径最顶层父目录的正则表达式需求
Groovy中提取文件路径的最顶层父目录(正则实现)
要从文件路径中提取最顶层父目录,仅当路径包含层级分隔符(/)时返回结果,纯文件名路径不返回任何内容,可以通过以下正则表达式结合Groovy语法实现:
实现方案
正则表达式说明
使用正则 ^([^/]+)/ 匹配路径开头的顶层目录部分:
^:锚定字符串起始位置([^/]+):捕获一个或多个非/的字符,这部分就是顶层目录名称/:确保捕获的目录后存在层级分隔符,排除无父目录的纯文件名场景
Groovy代码实现
// 定义提取顶层父目录的方法 def extractTopLevelDir(String filePath) { def matcher = filePath =~ /^([^/]+)/ // 仅当路径包含分隔符且匹配到有效目录时返回结果 return filePath.contains('/') && matcher.find() ? matcher.group(1) : null } // 测试示例路径 def testPaths = [ 'foo/bar/baz/file.ext', 'file2.ext', 'fooz/file3.ext' ] testPaths.each { path -> def topDir = extractTopLevelDir(path) if (topDir) { println("路径 '$path' 的顶层父目录:$topDir") } else { println("路径 '$path' 无顶层父目录") } }
运行结果
路径 'foo/bar/baz/file.ext' 的顶层父目录:foo 路径 'file2.ext' 无顶层父目录 路径 'fooz/file3.ext' 的顶层父目录:fooz
补充说明
- 如果需要兼容Windows风格的路径(
\分隔),可将正则中的/替换为[\\/],注意Groovy字符串的转义处理:~/^([^\\\\/]+)[\\\\/] - 方法会自动过滤纯文件名路径,仅返回存在层级结构的路径的顶层目录名
内容的提问来源于stack exchange,提问作者rismoney
相关产品推荐
相关产品推荐

