2015-11-05 20 views
0

我想拆分主机名,共享文件夹,路径,文件名和扩展名的UNC路径。我几乎可以得到它,但最后一个序列有点不对,因为我没有正确地获得文件。正则表达式:拆分为路径的最后一次发生

例如

//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

替换'\ /'和'/'。并使用'R“()”'符号以避免双重转义'\ w'。 '{1,1}'可以被删除,这是多余的。 –

+0

感谢您的提示! –

回答

2

您想删除组“([^ \\。])”,如下面的“\\”。匹配最后的时间段。您还需要另一组词相匹配的文件名本身后跟期间,像这样:

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

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

+0

它崇拜,很多很多谢谢! –