2008年12月12日星期五

boost::regex匹配序列文件名2

regex默认是perl的语法,但是一些细微的地方和perl的不尽相同。今天就在这上面吃大亏了。

std::string regstr2="("+name+")([0-9]+{"+ia+"})([.]"+ext+")";
boost::regex expression2(regstr2);
就这两句,编译的时候没有问题,一运行就出错,总是说表达式不合法。折腾了半晚上才发现[0-9]+外面要加()才行。
用reggy工具的时候就没有这个问题([0-9]+){3}和[0-9]+{3}是同样的效果,在boost里后者就是不合法的表达式。

没有评论: