VC里正则表达式匹配 惰性匹配的有关问题

VC里正则表达式匹配 惰性匹配的问题
正则表达式为  boost::regex  w("(\\w+\\*)+?"); //惰性匹配

\w+\* 匹配以星号结尾的字符串。

(\w+\*)+ 匹配多个以星号结尾的字符串。

(\w+\*)+? 惰性匹配多个以星号结尾的字符串。

如果输入的字符串为temp:254424501*239184501*

如何把两个以星号结尾的子串都匹配出来。

regex_match(temp,smatch,w)

使得
smatch[0] = 254424501*239184501*;
smatch[1] = 254424501*;
smatch[2] = 239184501*;

现在的匹配结果为:
smatch[0] = 254424501*239184501*;
smatch[1] = 239184501*;
这是为什么呀






------解决思路----------------------
你的正则表达式里只有一个子表达式,当然只能有smatch[1],再怎么改也不会出现smatch[2]的
可以考虑这样改:
    regex w("\\w+\\*");
    smatch match;
    string tmp = "temp:254424501*239184501*";
    auto m_begin = sregex_iterator(tmp.begin(), tmp.end(), w);
    auto m_end = sregex_iterator();
    for (sregex_iterator m = m_begin; m != m_end; ++m)
    {
        cout << (*m)[0] << endl;
    }