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

Категория: C# , RegEx Комментариев: 5

Два небольших регулярных выражения для извлечения диска, пути и имени файла из 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);

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

Автор: Кто-то   @   6 июня 2009 Комментариев: 5
Метки : ,

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

Webmoney Z163628999150, R617151845974

Комментариев: 5

Комментарии
июня 6, 2009
11:58
#1 Алексей :

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

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

июля 11, 2009
20:16
#3 Сергей :

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

Автор июля 11, 2009
20:30

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

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

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

Янв 30, 2010
19:16
#5 Onotol4enko :

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

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

Предыдущая запись
«
Следующая запись
»