Регулярное выражение: разделить до последнего вхождения пути

Я хочу разделить UNC-путь для имени хоста, общей папки, пути, имени файла и расширения. Я почти получил это, но последняя последовательность как-то не так, потому что я не получил файл fileem правильно.

например

//host/shared/path1/path2/path3/filename.pdf

следует разделить на:

host
shared
path1/path2/path3
filename
pdf

Но на данный момент я получаю что-то вроде этого:

host
shared
path1/path2/path3/filenam
e
pdf

используя это регулярное выражение:

std::regex rgx("\/\/(\\w+?){1,1}\/(\\w+?)\/([\\w\/]+)([^\\.])\\.(.+)$");

Так что с ним не так и как я могу это решить?

0

Решение

Вы хотите удалить группу «([^ \\.])» Как следующую «\\.» соответствует периоду в конце. Вы также хотите, чтобы другая группа слов соответствовала имени самого файла, за которым следует точка, например:

std::regex rgx("\/\/(\\w+?){1,1}\/(\\w+?)\/([\\w\/]+)\/([\\w]+)\\.(.+)$");

https://regex101.com/r/yK4zH1/4

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]