搜索线
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
好难用吗?
请帮忙。
看起来像是编译器错误(针对gcc提到的一个错误:https : //gcc.gnu.org/bugzilla/show_bug.cgi? id =52719)。尝试另一个编译器。
正则表达式的另一个问题是-它必须与整个字符串匹配,请查看文档:
请注意,regex_match将仅将正则表达式成功匹配到整个字符序列,而std :: regex_search将成功匹配子序列。
这必须工作: ^km\\.key\\.([A-Z]{2})_.*
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句