控制逃逸太短.如何得到这个正则表达式
本文关键字:正则表达式 何得 控制 | 更新日期: 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''[^'']+''[^'']+''[^'']+''
也许我误解了这个问题,但听起来你的方法过于复杂了。
你不能简单地匹配这个:.+''
然后替换为''
(无)?