Разбор адреса файла

Два небольших регулярных выражения для извлечения диска, пути и имени файла из windows-адреса файла и пути и имени файла из unix-адреса.

Собственно вот они:

([A-Za-z]\:\\)([^/]+[\\])(\w+\.\w+$) — Windows

(^/.*./)(\w+\.\w+$) — unix

В C# можно их использовать следующим образом:
string path = @"C:\Windows\notepad.exe";
MatchCollection matches = Regex.Matches(path, @"([A-Za-z]\:\\)([^/]+[\\])(\w+\.\w+$)", RegexOptions.IgnoreCase);
Console.WriteLine("Диск: {0}", matches[0].Groups[1].Value);
Console.WriteLine("Путь: {0}", matches[0].Groups[2].Value);
Console.WriteLine("Имя файла: {0}", matches[0].Groups[3].Value);

path = @"/etc/X11/xorg.conf";
matches = Regex.Matches(path, @"(^/.*./)(\w+\.\w+$)", RegexOptions.IgnoreCase);
Console.WriteLine("Путь: {0}", matches[0].Groups[1].Value);
Console.WriteLine("Имя файла: {0}", matches[0].Groups[2].Value);

Скачать пример

Поблагодарить автора

5 Responses to Разбор адреса файла

  1. О, регулярные выражения.

    Не подскажешь толковую литературу по ним под C#?

  2. Фигня! Не будет работать если в имени файла пробел!

  3. Так все работает:

    MatchCollection matches = Regex.Matches (path, @"([A-Za-z]\:\\)([^/]+[\\])([^\.]+\.[^\.]+$)", RegexOptions.IgnoreCase); // win

    matches = Regex.Matches (path, @"(^/.*./)([^\.]+\.[^\.]+$)", RegexOptions.IgnoreCase); //lin

  4. я еще могу понять, еслиб Вы поместили пару шаблонов с регулярными выражениями в одну статью, но по каждой регулярке создавать отдельную — абсурд, особенно если учесть что никаких заметок и добавочной информации нет, один копипаст, это можно и в мсдн найти

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>