3
我正在使用boost :: xpressive来解析我的文本文件。我想看看是否只有当行以'#'开头(多次)。boost :: xpressive查看序列的开头
我使用下面的代码
std::string str1 = "## this could be my line";
sregex rex1 = sregex::compile("^#+");
smatch result1;
if(regex_match(str1,result1,rex1){
std::cout << result1[0] << '\n';
}else{
std::cout << "match not found!\n";
}
但我总是得到“匹配未找到!”,甚至当行以#开头。有人能帮我一下吗?
令人难以置信,任何人都可以帮助我使用boost :: xpressive'bos'来编写rex1语句吗?
谢谢! Ayesha
哇!非常感谢!它工作!你能解释为什么regex_match不匹配?我认为'##'应该匹配'^#+'。 – 2012-04-11 21:26:11
@Ayesha:'“##”'确实匹配'“^#+”',但是'“##这可能是我的行”(如你的问题的代码)不会。引用[文档](http://www.boost.org/doc/html/xpressive/user_s_guide.html#boost_xpressive.user_s_guide.quick_start),“*要使regex_match()成功,整个字符串必须与正则表达式匹配,从开始到结束。*“所以你的正则表达式必须是'”^#+。*“'以使'regex_match'能够处理你的问题的输入。提示:阅读文档。 ; - ] – ildjarn 2012-04-11 21:30:54
明白了!非常感谢。必须更仔细地重新阅读文档! – 2012-04-11 21:35:46