Регулярное выражение для последней папки в пути - PullRequest
1 голос
/ 23 марта 2012

Я пытался захватить последнюю папку в пути к папке, используя регулярные выражения в C #, но я слишком новичок в этом, чтобы понять это.Например, если у меня есть C: \ Projects \ Test, то выражение должно возвращать Test.Если у меня есть H: \ Programs \ Somefolder \ Someotherfolder \ Final, то результат должен быть Final.Я попробовал приведенный ниже код, но он просто взрывается.Спасибо за любую помощь.

string pattern = ".*\\([^\\]+$)";
Match match = Regex.Match("H:\\Projects\\Final", pattern, RegexOptions.IgnoreCase);

Ответы [ 4 ]

6 голосов
/ 23 марта 2012

Почему вы используете регулярное выражение? Вы можете просто использовать DirectoryInfo.Name

var directoryname = new DirectoryInfo(@"C:\Projects\Test").Name;
\\The variable directoryname will be Test
2 голосов
/ 23 марта 2012

это неправильное использование регулярных выражений, когда у вас есть довольно полный набор библиотек .NET, которые могут сделать это за вас ... два простых метода, использующих System.IO.Path или System.IO.DirectoryInfo ниже

        string path = @"H:\Programs\Somefolder\Someotherfolder\Final";
        Console.WriteLine(System.IO.Path.GetFileName(path));
        Console.WriteLine(new System.IO.DirectoryInfo(path).Name);
2 голосов
/ 23 марта 2012

Возможно, это?

string strRegex = @".*\\(.*)"; RegexOptions myRegexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline; 
Regex myRegex = new Regex(strRegex, myRegexOptions); 
string strTargetString = @"H:\Programs\Somefolder\Someotherfolder\Final"; 
string strReplace = @"$1";

return myRegex.Replace(strTargetString, strReplace);
1 голос
/ 23 марта 2012

Почему бы не использовать сплит?

string str = "c: \ temp \ temp1 \ temp2";

string lastfolder = str.Split ("\"). Last;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...