std :: regex构造抛出异常

时间:2014-09-03 05:35:06

标签: regex c++11

搜索行

  

km.key.AB_ABCDEFG

我想提取'AB'

我使用std::regex

string pattern("^km\\.key\\.([A-Z]{2})_");    //this throw a exception

regex reg(pattern, std::regex::extended );
smatch sm;
if(regex_match(line,sm,reg))
{
    key_type = sm[1];
    return 0;   
}

但我相信这个正则表达式是正确的。

std::regex难以使用?

请帮忙。

1 个答案:

答案 0 :(得分:1)

它看起来像编译器错误(gcc提到的一个:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52719)。试试另一个编译器。

另一个问题是你的正则表达式 - 它必须匹配整个字符串,look at documentation

  

请注意, regex_match 只能将正则表达式与整个字符序列成功匹配,而std::regex_search将成功匹配子序列。

这必须有效:^km\\.key\\.([A-Z]{2})_.*

相关问题