控制逃逸太短.如何得到这个正则表达式

本文关键字:正则表达式 何得 控制 | 更新日期: 2023-09-27 18:11:12

那么,假设我有一个搜索结果返回为:

''my.test.site@SSL'JohnDoe'SusanSmith'courses'PDFs'Science_Math'BIOL'S12014 Syllabi'BIOL-1322-S12014-John-Doe.pdf

当结果在文本框中列出时,我得到的是整个路径,而不仅仅是文件。这是按照设计的功能,因为我不能在枚举目录时使用.Select(Path.GetFileName),以免它没有完整的路径来进行搜索。

所以,当结果显示时,我打算使用Regex在结束时进行替换,但是当我去到Rubular时,它不喜欢我的表达式或测试字符串(无法找出哪个)。

除了文件名和扩展名,我基本上想删去所有内容。

所以我的正则表达式应该是这样的:
''my.test.site@SSL'JohnDoe'SusanSmith'courses'PDFs'.+'.+'.+'

这样我就得到了所有要删除的文件名和扩展名。然而,Rubular不喜欢的东西,因为我得到了一个"太短的控制逃逸"的错误。我不想在没有验证的情况下在c#中进行测试,因为我大量使用它,并且认为如果它在那里不起作用,它将在运行时不起作用。

任何想法?谢谢。

控制逃逸太短.如何得到这个正则表达式

请记住转义'字符,以及文字.字符:

''''my'.test'.site@SSL''JohnDoe''SusanSmith''courses''PDFs''.+''.+''.+''

还要注意,您可能希望通过使用非贪婪量词来避免.+上的过度匹配:

''''my'.test'.site@SSL''JohnDoe''SusanSmith''courses''PDFs''.+?''.+?''.+?''

或者使用字符类:

''''my'.test'.site@SSL''JohnDoe''SusanSmith''courses''PDFs''[^'']+''[^'']+''[^'']+''

也许我误解了这个问题,但听起来你的方法过于复杂了。

你不能简单地匹配这个:.+''

然后替换为''(无)?