我一直在寻找 RegEX 以从代码中提取带有路径的文件,以便我可以检查它们是否存在,但最终没有得到我想要的。我想这很可能是由于缺乏 RegEX 知识。
我对我运行的每一个 RegEx 示例都感到有点沮丧,我总是最终得到没有路径的文件的文件名,我的要求在 sed 中相当简单。
/"+/{1,6}+.myext"/
我的路径需要 1-6 深,它需要是具有特定扩展名的文件名,路径基于 unix,但并不总是以正斜杠开头。并且文件名不能以点开头。
我在 powershell 中尝试了这个并且它有效,我相信你可以在你的应用程序中使用这样的东西。
$Matches = @()
$String = '/this/is/a/long/path/and/Filename.MyExtension'
if ($String -match '^(/?[^/]+){1,6}/([^/.][^/]*[.]MyExtension)$') {
$Matches[2]
} # end if
产量
Filename.MyExtension
这通过查找 1 到 6 组字符串来工作,每个字符串必须以 / 开头,并且字符串通过所有非斜杠字符继续,或者字符组不能以 / 开头
最后一组字符不能以 / 或 开头。后跟所有非斜线字符,直到所需的点扩展名 [在本例中为“MyExtension”]
我知道这对于 OPs 问题来说已经晚了,但是对 OP 和其他尝试使用 RegEx 的人有帮助的是regexlib.com;他们有一个大型的正则表达式库。他们还有一个RegEx 测试器,它对测试您的 RegEx 代码非常有帮助。此外,Ultrapico 的 Expresso是一个非常有用的创建正则表达式的工具。