【问题标题】:Regex: split to the last occurence of path正则表达式:拆分到最后出现的路径
【发布时间】:2015-11-05 22:57:22
【问题描述】:

我想为主机名、共享文件夹、路径、文件名和扩展名拆分一个 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\/]+)([^\\.])\\.(.+)$");

那么它有什么问题,我该如何解决呢?

【问题讨论】:

  • \/ 替换为/。并使用R"()" 符号,以免双重转义\w{1,1}可以去掉,多余。
  • 感谢您的提示!

标签: c++ regex path filepath unc


【解决方案1】:

您想将组“([^\\.])”删除为以下“\\.”匹配最后的句点。您还希望另一个词组与文件名本身匹配,后面跟着句点,如下所示:

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

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

【讨论】:

    猜你喜欢
    • 2023-02-08
    • 1970-01-01
    • 2020-08-10
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多