C# 不使用';不排除空白

C# 不使用';不排除空白,c#,regex,file-extension,C#,Regex,File Extension,我一直在使用此正则表达式从文件路径字符串中提取文件名: Regex r = new Regex(@"\w+[.]\w+$+"); 只要文件名中没有空格,就可以这样做。例如: r.Match("c:\somestuff\myfile.doc").Value = "myfile.doc" r.Match("c:\somestuff\my file.doc").Value = "file.doc" 我需要正则表达式给我“my file.doc”,而不仅仅是“file.doc” 我自己也试着把这个表

我一直在使用此正则表达式从文件路径字符串中提取文件名:

Regex r = new Regex(@"\w+[.]\w+$+");
只要文件名中没有空格,就可以这样做。例如:

r.Match("c:\somestuff\myfile.doc").Value = "myfile.doc"
r.Match("c:\somestuff\my file.doc").Value = "file.doc"
我需要正则表达式给我“my file.doc”,而不仅仅是“file.doc”

我自己也试着把这个表达搞乱了。特别是在了解到\s+用于匹配空白后,我尝试添加它。我没有得到我所希望的结果

我确实想出了一个解决方案,只是为了完成任务:我从字符串末尾开始,向后走,直到到达反斜杠。这将文件名按相反的顺序(即cod.elifym)转换为一个字符数组,然后我使用array.reverse()将其转换。但是,我想学习如何通过简单地修改原始正则表达式来实现这一点。

A可能只是看起来像:

[^\\]+$
考虑使用:

System.IO.Path.GetFileName(path) 

它必须是正则表达式吗?改用。

它必须是正则表达式吗?你知道在.NET中有一个类会为你返回文件名吗?看看System.IO.Path.GetFileName.Wow,我是个白痴。出于某种原因,我认为如果我使用System.IO.Path,我将需要访问实际文件(我没有)。但是现在我看到你可以给它一个字符串。我最终使用System.IO.Path方法,但是因为这直接回答了原始问题,所以我将这个标记为答案。
Regex r = new Regex(@"[\w ]+\.\w+$");