Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# .Net中使用JavaScript的路径上的正则表达式存在意外匹配_C#_.net_Regex_Regex Negation_Regex Group - Fatal编程技术网

C# .Net中使用JavaScript的路径上的正则表达式存在意外匹配

C# .Net中使用JavaScript的路径上的正则表达式存在意外匹配,c#,.net,regex,regex-negation,regex-group,C#,.net,Regex,Regex Negation,Regex Group,澄清:我不是要一个模式。我在问为什么会这样 模式在PHP和JavaScript中工作,但在.Net中不工作 我正在尝试从路径获取底层文件夹。该模式在PHP和JavaScript中工作,但在.Net中返回意外结果。我想理解为什么.Net会返回使用此模式返回的内容 给定此路径: “c:\level0\level1\level2\filename.ext” 我正在努力匹配 “二级” 这是我正在使用的模式:(编辑器不断地删除斜线,因此下面是一张图片: 我希望匹配的是: 二级 C#匹配的内容: c:\l

澄清:我不是要一个模式。我在问为什么会这样 模式在PHP和JavaScript中工作,但在.Net中不工作

我正在尝试从路径获取底层文件夹。该模式在PHP和JavaScript中工作,但在.Net中返回意外结果。我想理解为什么.Net会返回使用此模式返回的内容

给定此路径:

“c:\level0\level1\level2\filename.ext”

我正在努力匹配

“二级”

这是我正在使用的模式:(编辑器不断地删除斜线,因此下面是一张图片:

我希望匹配的是:

二级

C#匹配的内容:

c:\level0\level1

为完整起见,以下是RegEx实例中的模式:

需要如何为.Net指定此模式以匹配底层文件夹?

如果您在文件系统上运行代码,则不需要为此使用正则表达式,框架已经通过
FileInfo
包含您所需的内容:

new FileInfo(@"c:\level0\level1\level2\filename.ext").Directory.Name
如果您没有访问文件系统的权限,也可以使用
Path.GetDirectoryName()
,这比Regex简单一点,我认为:

string directoryPath = Path.GetDirectoryName(@"c:\level0\level1\level2\filename.ext");

//outputs "c:\level0\level1\level2"

string folder = directoryPath.Split(Path.DirectorySeparatorChar).Last();

对于两个答案中的后一个,您也可以使用Split和linq:

string path = @"c:\level0\level1\level2\filename.ext";
string result = path.Split('\\').Reverse().Skip(1).First();
//outputs: level2

类似于
Regex.Match(path,@.*\([^\\]+)\\.*)。Groups[1]。Value
。或使用命名组
Regex.Match(path,@.*\(?[^\\]+)\.*)。Groups[“name”].Value
您可以留下评论并ping他们以请求澄清,而不是编辑文章并在编辑消息中攻击用户。谢谢您的建议,我会的。使用它。但是,问题是关于RegEx的,我想了解为什么此模式在.Net中不起作用。