我正在尝试使用包含非贪婪重复的扩展语法为boost regex引擎编写正则表达式。但是对于任何正则表达式(甚至像“a。*?b”这样简单)我都会得到“无效的前置正则表达式”异常。
简单的boost ::正则表达式调用会导致问题:
boost::regex e("a.*?b", boost::regex_constants::extended);
它与perl语法完美配合,但遗憾的是,使用除basic或extended之外的语法不是一个选项(我无法修改构建regex对象的代码)。提升版本是1.39。
是否可以在扩展语法中使用非贪婪表达式?
感谢。
答案 0 :(得分:1)
使用perl flavor支持:
#include <boost/regex.hpp>
int main()
{
boost::regex e("a.*?b", boost::regex_constants::perl);
assert(boost::regex_match("acdefghijklmnopqb", e));
}