Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于从需要路径的代码中获取路径和文件名的正则表达式_C++_Regex - Fatal编程技术网

C++ 用于从需要路径的代码中获取路径和文件名的正则表达式

C++ 用于从需要路径的代码中获取路径和文件名的正则表达式,c++,regex,C++,Regex,我一直在搜索正则表达式以从代码中提取带有路径的文件,这样我就可以检查它们是否存在,但最终没有得到我想要的。我想这很可能是因为缺乏正则表达式知识 我对我运行的每一个正则表达式示例都有点失望,我总是得到没有路径的文件名,我的要求在某种程度上相当简单 /“+/{1,6}+.myext”/ I路径深度需要在1-6之间,它需要是具有特定扩展名的文件名,路径基于unix,但不总是以正斜杠开始。而且文件名不能以点开头。我在powershell中尝试了这个方法,效果很好,我相信您可以在应用程序中使用类似的方法

我一直在搜索正则表达式以从代码中提取带有路径的文件,这样我就可以检查它们是否存在,但最终没有得到我想要的。我想这很可能是因为缺乏正则表达式知识

我对我运行的每一个正则表达式示例都有点失望,我总是得到没有路径的文件名,我的要求在某种程度上相当简单

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


I路径深度需要在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组字符串来实现的,每个字符串必须以a/开头,并且字符串在所有非斜杠字符中继续,或者字符组不能以a开头/


最后一组字符不得以/或开头。后跟所有非斜杠字符,直到所需的点扩展名[在本例中为“MyExtension”]

我在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组字符串来实现的,每个字符串必须以a/开头,并且字符串在所有非斜杠字符中继续,或者字符组不能以a开头/


最后一组字符不能以a/or开头。后跟所有非斜杠字符,直到所需的点扩展名[在本例中为“MyExtension”]

我知道这对于OPs问题来说已经晚了,但对OP和其他试图使用正则表达式的人有帮助的是:;他们有一个很大的正则表达式库。它们还有一个非常有助于测试正则表达式代码的方法。也是创建正则表达式的一个非常有用的工具。

我知道这对于OPs问题来说已经太晚了,但是对OP和其他试图使用正则表达式的人有帮助的是;他们有一个很大的正则表达式库。它们还有一个非常有助于测试正则表达式代码的方法。也是创建正则表达式的非常有用的工具。

您的正则表达式(可能是无效语法)与您描述的完全不同。为什么不从这里开始:你能详细说明一下“但不要总是从正斜杠开始”吗?它们总是以斜杠开头吗?为什么这个问题被标记为C++?你的正则表达式(可能是无效语法)看起来不像你描述的那样。为什么不从这里开始:你能详细说明一下“但不要总是从正斜杠开始”吗?它们总是从斜线开始吗?为什么这个问题被标记为C++?