C# .Net中使用JavaScript的路径上的正则表达式存在意外匹配
澄清:我不是要一个模式。我在问为什么会这样 模式在PHP和JavaScript中工作,但在.Net中不工作 我正在尝试从路径获取底层文件夹。该模式在PHP和JavaScript中工作,但在.Net中返回意外结果。我想理解为什么.Net会返回使用此模式返回的内容 给定此路径: “c:\level0\level1\level2\filename.ext” 我正在努力匹配 “二级” 这是我正在使用的模式:(编辑器不断地删除斜线,因此下面是一张图片: 我希望匹配的是: 二级 C#匹配的内容: c:\level0\level1 为完整起见,以下是RegEx实例中的模式: 需要如何为.Net指定此模式以匹配底层文件夹?如果您在文件系统上运行代码,则不需要为此使用正则表达式,框架已经通过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
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中不起作用。