提升构造函数抛出的正则表达式异常。* {

时间:2016-04-14 16:24:03

标签: c++ regex boost

Boost版本1.60.0 gcc 4.8.4

当我用字符串.*{构造一个boost :: regex对象时,我得到一个异常,说明:

what():  Missing } in quantified repetition.  The error occurred while parsing the regular expresion: '.*{>>>HERE>>>'.

当对象为boost::regex::extended类型时会发生此错误,但如果该对象为boost::regex::perl则不会发生此错误。

所以以下引发异常:

regString(".*{");
boost::regex reg_e(regString, boost::regex::extended);

但这不是:

regString(".*{");
boost::regex reg_p(regString, boost::regex::perl);

这是预期的行为还是错误?
如果是预期的,为什么?什么是适当的工作?

1 个答案:

答案 0 :(得分:2)

{在此上下文中是一个特殊字符 ,您需要将其转义。

http://www.boost.org/doc/libs/1_60_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

  

请注意,“{”和“}”字符将被视为普通文字   当在不重复的上下文中使用时:这与Perl 5.x匹配   行为。例如,在表达式“ab {1”,“ab1}”和“a {b} c”中   大括号都被视为文字,没有错误   提高。