boost :: spirit :: qi парсинг дубликатов на выходе

У меня есть этот очень простой парсер с использованием Boost :: Spirit:

rule<std::string::iterator, std::string()> zeroTo255 = (string("25") >> char_('0', '5'))
    | (char_('2') >> char_('0', '4') >> digit)
    | (char_('1') >> repeat[2](digit))
    | (char_('1', '9') >> digit) | digit;

Когда я пытаюсь разобрать

std::string o{"1"};
std::string s;
parse(o.begin(), o.end(), zeroTo255, s);
std::cout << o << ": " << s << std::endl;

У меня в качестве вывода

1: 111

Я явно что-то делаю не так, но что?

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

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