Member 13063329 Ответов: 1

Регулярное выражение для извлечения части пути к файлу


Я хочу создать регулярное выражение, чтобы дать мне часть пути к файлу.
Например:
C:\Users\CoolDude\Documents\Access\Test.pdf

я хочу, чтобы регулярное выражение давало мне только
Documents\Access\Test.pdf

Имя папки не всегда будет "Документы" после имени пользователя.

Есть Идеи?

Что я уже пробовал:

Все еще пытаясь. Пока что никакого рабочего решения нет.

Michael_Davies

Если вы уверены, что C:\Users\SomeUserNameHere\... тогда все, что вам нужно сделать, это извлечь строковую часть после третьей обратной косой черты, которая возможна в регулярном выражении, вы также можете разделить строку на массив, используя\, чтобы получить компоненты.

Использование split;

Тусклый грех как строка = "C:\Users\CoolDude\Documents\Access\Test.pdf"
Dim sOut() как строка

СОУТ = грех.Сплит("\\")

Тогда массив sOut будет иметь следующие элементы;

С:
Пользователь
Хладнокровие
Документы
Доступ
Test. pdf

Затем вы можете восстановить строку из элемента 3.

Имейте в виду, что рабочие каталоги пользователей могут быть перемещены, как и мои, я никогда не держу их на диске C:, в другое место, и в этом случае правила, возможно, изменятся.

PIEBALDconsult

Используйте классы в системе.Вместо этого пространство имен IO.

George Swan

Я бы использовал Сплит вот так
путь к строке = @"C:\Users\CoolDude\Documents\Access\Test.pdf";
int count = путь.Count (c => c =='\\');
ArraySegment< string & gt; splitArray=новый ArraySegment & lt;string> (путь.Сплит('\\'),граф-2,3);
string pathResult= строка.Join ( "\\ " , splitArray);

1 Ответов

Рейтинг:
8

OriginalGriff

Попробуй:

public static Regex regex = new Regex(@".:\\Users\\.+?\\", RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.Compiled);
...
string result = regex.Replace(InputText,"");

Если вы собираетесь использовать регулярные выражения, получите копию Экспрессо[^]- это бесплатно, и он проверяет, тестирует и генерирует регулярные выражения.