2

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

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"

我需要我的正则表达式给我“我的 file.doc”,而不仅仅是“file.doc”

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

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

4

3 回答 3

4

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

于 2012-09-03T07:47:10.447 回答
2
Regex r = new Regex(@"[\w ]+\.\w+$");
于 2012-09-03T07:47:40.773 回答
1

一个有效的正则表达式可能看起来像:

[^\\]+$

考虑使用:

System.IO.Path.GetFileName(path) 
于 2012-09-03T07:47:09.477 回答