关注What does std::match_results::size return? 我试着让这个简单的字符串匹配
#include <regex>
using namespace std;
void main() {
stringstream ss(
"<tag1 abc = \"Test ABC\" def = \"Test DEF\">"); string line;
regex re_open_tag("<([[:alnum:]]+)( \\w* = \\\"[\\w|\\s]*\\\")*>");
while (getline(ss, line, '\n')) {
for (auto i = sregex_iterator(begin(line), end(line), re_open_tag); i != sregex_iterator();
i++) {
auto &match = *i;
for (auto i = 0UL; i < match.size(); i++) printf("Match:%s\n", match[i].str().c_str());
}
}
}
它成功匹配字符串作为一个整体,但我得到以下输出
Match:<tag1 abc = "Test ABC" def = "Test DEF">
Match:tag1
Match: def = "Hello world"
abc = ...去哪里比赛。 std::sub_matches
数字3比我预期的数字少1。