2015-11-05 26 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

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