我正在尝试分解由一系列文件夹名称组成的路径:
“ / foldera / folderb / folderc”
进入
“ / foldera”“ / folderb”“ / folderc”
但是我找不到使用std :: regex的方法,
{
std::regex exp("^(/[a-zA-Z0-9-_]+)+");
std::smatch res;
std::string str = "/uuu/kkk";
std::regex_search( str, res, exp ) ;
{
std::cout << res[0] <<";" << res[1] << std::endl;
}
std::cout << std::endl;
}
它将仅匹配整个字符串或最后一个“ / kkk”,
我永远找不到匹配项“ / uuu”
我知道问题可以通过字符串拆分解决,但是我对这里的std :: regex解决方案感兴趣,因为上述内容对javascript和Qt的正则表达式是可行的。但是我不知道如何用std :: regex做到这一点。
PS。以下内容也不起作用:
{
const std::string s = "/uuu/kkk";
std::regex words_regex("(/[a-zA-Z0-9-_]+)+");
auto words_begin =
std::sregex_iterator(s.begin(), s.end(), words_regex);
auto words_end = std::sregex_iterator();
std::cout << "Found "
<< std::distance(words_begin, words_end)
<< " words:\n";
for (std::sregex_iterator i = words_begin; i != words_end; ++i) {
std::smatch match = *i;
std::string match_str = match.str();
std::cout << match_str << '\n';
}
}