所以,让我们说我的搜索结果是:
\\my.test.site@SSL\JohnDoe\SusanSmith\courses\PDFs\Science_Math\BIOL\S12014 Syllabi\BIOL-1322-S12014-John-Doe.pdf
每当结果列在文本框中时,我得到的是整个路径,而不仅仅是文件。这是按设计运行的,因为我在枚举目录时无法使用.Select(Path.GetFileName)
,以免它没有完整的搜索路径。
所以,当显示结果时,我将使用正则表达式在结尾处进行替换,但是当我去Rubular时,它不喜欢我的表达式或测试字符串(无法形象)哪个)。
我基本上想要删除除文件名和扩展名之外的所有内容。
所以我的正则表达式应该是这样的:
\\my.test.site@SSL\JohnDoe\SusanSmith\courses\PDFs\.+\.+\.+\
这样我就可以获得所有文件名和扩展名以便删除。然而,Rubular并不喜欢什么,因为我得到了一个太短的控制逃生"错误。我不想在C#中测试这个,而没有在Rubular中进行验证,因为我大量使用它,并想一想它是否在那里工作它不会在运行时工作。
有什么想法吗?感谢。
答案 0 :(得分:1)
请记住要转义\
字符以及文字.
字符:
\\\\my\.test\.site@SSL\\JohnDoe\\SusanSmith\\courses\\PDFs\\.+\\.+\\.+\\
另请注意,您可能希望通过使用非贪婪量词来避免.+
上的过度匹配:
\\\\my\.test\.site@SSL\\JohnDoe\\SusanSmith\\courses\\PDFs\\.+?\\.+?\\.+?\\
或使用字符类:
\\\\my\.test\.site@SSL\\JohnDoe\\SusanSmith\\courses\\PDFs\\[^\\]+\\[^\\]+\\[^\\]+\\
答案 1 :(得分:0)
也许我误解了这个问题,但听起来你的方法过于复杂。
你不能简单地匹配这个:.+\\
然后替换为''
(没有)?