.Net中的一个正则表达式在JavaScript中运行的路径上的意外匹配

Met*_*hor -4 .net c# regex regex-negation regex-group

澄清:我不是要求一种模式.我问为什么一个模式在PHP和JavaScript中工作但在.Net中不起作用.

我试图从路径获取底层文件夹.该模式适用于PHP和JavaScript,但在.Net中返回意外结果.我想了解为什么.Net会返回它返回的模式.

鉴于这条道路:

"C:\ 0级\ 1级\ level2的\ FILENAME.EXT"

我想要匹配

"级别2"

这是我正在使用的模式:(编辑器不断取出斜杠,所以这是一张图片:

正则表达式模式

我希望匹配的内容:

(第二级)

C#匹配的内容:

C:\ 0级\ 1级

为了完整性,这里是RegEx实例中的模式: VS模式

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

mac*_*ura 6

如果您在文件系统上拥有正确的安全权限,则运行代码就不需要使用Regex,框架已经包含了您需要的内容FileInfo:

new FileInfo(@"c:\level0\level1\level2\filename.ext").Directory.Name
Run Code Online (Sandbox Code Playgroud)

如果你没有访问文件系统,你也可以使用Path.GetDirectoryName()比我认为的正则表达式更直接:

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

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

string folder = directoryPath.Split(Path.DirectorySeparatorChar).Last();
Run Code Online (Sandbox Code Playgroud)

这里两个答案的后者的小提琴