Regex_match没有返回多个值

时间:2017-07-07 12:29:02

标签: regex c++11

关注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。

0 个答案:

没有答案