搜索行
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
难以使用?
请帮忙。
答案 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})_.*