正则表达式:拆分到路径的最后一次出现
Regex: split to the last occurence of path
我想为主机名、共享文件夹、路径、文件名和扩展名拆分一个 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\/]+)([^\.])\.(.+)$");
那么它有什么问题,我该如何解决?
您要删除组“([^\\.])”,如下面的“\\”。匹配末尾的句点。您还需要另一个词组来匹配文件名本身,后跟句点,如下所示:
std::regex rgx("\/\/(\w+?){1,1}\/(\w+?)\/([\w\/]+)\/([\w]+)\.(.+)$");
我想为主机名、共享文件夹、路径、文件名和扩展名拆分一个 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\/]+)([^\.])\.(.+)$");
那么它有什么问题,我该如何解决?
您要删除组“([^\\.])”,如下面的“\\”。匹配末尾的句点。您还需要另一个词组来匹配文件名本身,后跟句点,如下所示:
std::regex rgx("\/\/(\w+?){1,1}\/(\w+?)\/([\w\/]+)\/([\w]+)\.(.+)$");