Boost C ++ regex - как получить несколько совпадений - PullRequest
15 голосов
/ 26 июня 2010

Если у меня есть простой шаблон регулярных выражений, такой как "ab."и у меня есть строка, которая имеет несколько совпадений, таких как «abc abd».Если я сделаю следующее ...

boost::match_flag_type flags = boost::match_default;
boost::cmatch mcMatch;
boost::regex_search("abc abd", mcMatch, "ab.", flags)

, тогда mcMatch содержит только первый результат "abc".Как я могу получить все возможные совпадения?

1 Ответ

28 голосов
/ 26 июня 2010

Вы можете использовать boost::sregex_token_iterator как в этом коротком примере:

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main() {
    std::string text("abc abd");
    boost::regex regex("ab.");

    boost::sregex_token_iterator iter(text.begin(), text.end(), regex, 0);
    boost::sregex_token_iterator end;

    for( ; iter != end; ++iter ) {
        std::cout<<*iter<<'\n';
    }

    return 0;
}

Вывод этой программы:

abc
abd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...