提升正则表达式搜索 - 如何读取结果

问题描述 投票:0回答:1

我使用正则表达式来获取标签之间的文本:

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或使用其他接口?

c++ regex c++11 xml-parsing boost-regex
1个回答
0
投票

你忘记了\

<tagB>(.*)<\/tagB>

在boost.regex中,yourdata [0]对应全局匹配,然后yourdata [0 + i]对应第i个匹配。

© www.soinside.com 2019 - 2024. All rights reserved.