2008年12月12日星期五

boost::regex匹配序列文件名

#include
#include
int main() {
std::string regstr = "(^.*/)([^/]+?)([0-9]+)([.])([^./]+$)";
boost::regex expression(regstr);
std::string testString = "/Users/cobranail/Documents/helghast_sub_ver2.4_mesh006.jpg";
boost::smatch what;
std::string::const_iterator start = testString.begin();
std::string::const_iterator end = testString.end();
while( boost::regex_search(start, end, what, expression) )
{

std::string path(what[1].first, what[1].second);
std::string name(what[2].first, what[2].second);
std::string index(what[3].first, what[3].second);
std::string ext(what[5].first, what[5].second);
std::cout<< "path:" << path.c_str() << std::endl;
std::cout<< "name:" << name.c_str() << std::endl;
std::cout<< "index:" << index.c_str() << std::endl;
std::cout<< "ext:" < start = what[0].second;
}

return 0;
}

可以匹配的文件名:
filename.001.ext
filename001.ext
filename1.ext
file.name.001.ext
file.name001.ext

(^.*/) ---->path
([^/]+?) ---->file
([0-9]+) ---->index
([.]) ------->dot
([^./]+$) ---->ext


参考

没有评论: