我一直在使用这个正则表达式从文件路径字符串中提取文件名:
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()把它转过来。但是,我想通过简单地修改我原来的正则表达式来学习如何实现这一点。
答案 0 :(得分:4)
它必须是正则表达式吗?请改用System.IO.Path.GetFileName()。
答案 1 :(得分:2)
Regex r = new Regex(@"[\w ]+\.\w+$");
答案 2 :(得分:1)