你能用正则表达式向后看吗?

"blahblah\dummytext\_config.bat" 

如果我想从这个字符串中获取_config.bat,那么最好的方法是什么? 我能想到的唯一方法就是从.bat读回它找到的第一个斜杠,但我不知道该怎么做。

你可以使用LastIndexOf方法找到最后一个反斜杠:

 int index = myString.LastIndexOf( @"\" ); string result = myString.SubString( index + 1 ); 

丹尼尔有一个很好的观点。 使用FileInfo将是一种更安全的方式,并且易于使用:

 // myString doesn't need a full path either System.IO.FileInfo fi = new System.IO.FileInfo( myString ); // returns just the file name without the path string result = fi.Name; 

agent-j的暗示:

 string result = System.IO.Path.GetFileName( myString ); 

我不确定Path是否想要一条完整的路径。 FileInfo和Path都接受不存在的路径和文件名。

‘$’匹配一行的结尾。 因此,此正则表达式将匹配一行或多行不在行末尾的反斜杠,即示例字符串中的“_config.bat”。

 [^\\]+$ 

如果要在最后一个反斜杠后包含所有内容,可以使用以下正则表达式:

 .*\\(.*) 

捕获组将为您提供所需的结果。 因为默认情况下第一个。*是贪婪的,它会尽可能多地匹配,因此除了最后一个之外还消耗任何反斜杠(因为那时不再可能匹配)。

这是查看斜杠后面的正则表达式(?<=\\)

 string fileName = @"blah\blah\_config.bat"; Regex.Match(fileName, @"(?<=\\)[^\\]+$")); 

但如果您正在谈论文件名,请使用

 string relativePath = @"blah\blah\_config.bat"; string fileName = Path.GetFileName(relativePath); 

试试RegexOptions.RightToLeft; 欲了解更多信息,请访问此链接: https : //msdn.microsoft.com/en-us/library/yd1hzczs%28v=vs.110%29.aspx