RegEx用于从需要路径的代码获取路径和文件名

时间:2013-04-30 22:01:25

标签: c++ regex

我一直在寻找RegEX从代码中提取带路径的文件,以便我可以检查它们是否存在但最终没有得到我想要的。我想这很可能是由于缺乏RegEX知识。

我对我运行的每个RegEx示例感到有点沮丧,我总是得到没有Paths的文件的文件名,我的要求在sed有点相当简单。

/ “+ / {1,6} +。myext”/

我的路径需要1-6深度,它需要是具有特定扩展名的文件名,路径是基于unix但不是始终以正斜杠开始。文件名不能以点开头。

2 个答案:

答案 0 :(得分:1)

我在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”]

答案 1 :(得分:0)

我知道OP问题已经迟到了,但对OP和其他试图使用RegEx的人有帮助的是regexlib.com;他们有一个庞大的正则表达式库。它们还有一个RegEx tester,非常有助于测试您的RegEx代码。此外,Ultrapico's Expresso是一个非常有用的工具,用于创建正则表达式。