【发布时间】:2017-08-16 10:30:27
【问题描述】:
我想提取标签的内部内容。来自以下字符串:
<tag1 val=123>Hello</tag1>
我只想得到
Hello
我做什么:
string s = "<tag1 val=123>Hello</tag1>";
regex re("<tag1.*>(.*)</tag1>");
smatch matches;
bool b = regex_match(s, matches, re);
但它返回两个匹配项:
<tag1 val=123>Hello</tag1>
Hello
当我尝试只获取第一个这样的捕获组时:
"<tag1.*>(.*)</tag1>\1"
我得到零匹配。
请指教。
【问题讨论】:
-
您只会得到 1 个包含两个子匹配的匹配:1) 整个匹配,2) 捕获组 1 值。可以使用
matches[1].str()或matches.str(1)访问捕获