不排除空格的文件名的正则表达式

时间:2012-09-03 07:44:30

标签: 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”

我自己试着弄乱这个表达。特别是我在学习了匹配空格后尝试添加\ s +。我没有得到我希望的结果。

我确实设计了一个解决方案来完成工作:我从字符串的末尾开始,向后退,直到达到反斜杠。这给了我相反顺序的文件名(即cod.elifym)到一个字符数组中,然后我用Array.Reverse()把它转过来。但是,我想通过简单地修改我原来的正则表达式来学习如何实现这一点。

3 个答案:

答案 0 :(得分:4)

它必须是正则表达式吗?请改用System.IO.Path.GetFileName()

答案 1 :(得分:2)

Regex r = new Regex(@"[\w ]+\.\w+$");

答案 2 :(得分:1)

working regex可能看起来像:

[^\\]+$

考虑使用:

System.IO.Path.GetFileName(path)