【发布时间】:2019-02-10 09:46:56
【问题描述】:
我正在使用 boost 1.67.0 regex 使用以下 sn-p 在当前文件夹中查找匹配的文件名
boost::filesystem::path p(".");
if(is_directory(p)) {
for(auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(p), {})){
std::stringstream ss;
ss << entry;
std::string filename = ss.str();
std::cout << filename << std::endl;
boost::regex pattern("some_\\d+_file\.txt");
if(boost::regex_match(filename, pattern)){
std::cout << "matched" << filename << std::endl;
}
}
}
std::cout << filename << std::endl; 行产生的当前目录的内容是:
"./myApp.out"
"./some_0_file.txt"
"./some_1_file.txt"
"./other_file.txt"
"./some_other_file.txt"
"./some_2_file.txt"
为了确认我的匹配表达式是正确的,我咨询了Perl Regular Expression Syntax。也使用RegEx101.com确认,输出正确显示3个匹配如下:
some_0_file.txt
some_1_file.txt
some_2.file.txt
问题
我的 sn-p 或 RegEx 有什么问题吗?为什么boost::regex_match 产生 0 匹配?
我错过了什么?
【问题讨论】:
标签: c++ regex c++11 boost boost-regex