我使用正则表达式来获取标签之间的文本:
std::string data = "<tagA>aaa</tagA><tagB>bbb</tagB><tagC>ccc</tagC>";
boost::regex expr("<tagB>(.*)</tagB>");
boost::smatch smatch;
boost::regex_search(data, smatch, expr);
//smatch[0] <tagB>bbb</tagB>
//smatch[1] bbb
我正在寻找一个存储在bbb
中的字符串smatch[1]
但是根据数字索引读取内容看起来不太好。有没有其他方法可以得到结果?也许我应该修改正则表达式以获得单个元素smatch或使用其他接口?
你忘记了\
:
<tagB>(.*)<\/tagB>
在boost.regex中,yourdata [0]对应全局匹配,然后yourdata [0 + i]对应第i个匹配。