Boost регулярное выражение не работает, как ожидалось в моем коде

Я только начал использовать Boost :: regex сегодня и также довольно новичок в регулярных выражениях. Я используюРегулятор " и Expresso, чтобы проверить мое регулярное выражение и, кажется, доволен тем, что я вижу там, но передача этого регулярного выражения для повышения, похоже, не делает то, что я хочу. Любые указатели, которые помогут мне найти решение, будут приветствоваться. Как побочный вопрос, есть ли какие-нибудь инструменты, которые помогли бы мне проверить мое регулярное выражение против boost.regex?

using namespace boost;
using namespace std;

vector tokenizer::to_vector_int(const string s)
{
    regex re("\\d*");
    vector vs;
    cmatch matches;
    if( regex_match(s.c_str(), matches, re) ) {
        MessageBox(NULL, L"Hmmm", L"", MB_OK); // it never gets here
        for( unsigned int i = 1 ; i < matches.size() ; ++i ) {
            string match(matches[i].first, matches[i].second);
            vs.push_back(match);
        }
    }
    return vs;
}

void _uttokenizer::test_to_vector_int() 
{
    vector __vi = tokenizer::to_vector_int("0<br>1");
    for( int i = 0 ; i < __vi.size() ; ++i ) INFO(__vi[i]);
    CPPUNIT_ASSERT_EQUAL(2, (int)__vi.size());//always fails
}

Обновление (спасибо Даву за помощь в разъяснении моего вопроса): я надеялся получить вектор с двумя строками => "0" и "1", Вместо этого я никогда не получаю успешное regex_match () (regex_match () всегда возвращает false), поэтому вектор всегда пуст.

Спасибо '1800 ИНФОРМАЦИЯ за ваши предложения.to_vector_int() метод теперь выглядит следующим образом, но он входит в бесконечный цикл (я взял код, который вы дали, и изменил его, чтобы сделать его компилируемым) и нашел "0", "", "", "" и так далее. Он никогда не найдет «1».

vector tokenizer::to_vector_int(const string s)
{
    regex re("(\\d*)");
    vector vs;

    cmatch matches;

    char * loc = const_cast(s.c_str());
    while( regex_search(loc, matches, re) ) {
        vs.push_back(string(matches[0].first, matches[0].second));
        loc = const_cast(matches.suffix().str().c_str());
    }

    return vs;
}

Честно говоря, я неЯ думаю, что я все еще понимаю основы поиска шаблона и получения совпадений. Есть ли учебники с примерами, которые объясняют это?

Ответы на вопрос(1)

Ваш ответ на вопрос