如何使用C++ Boost的regex_iterator()

You*_*sef 8 c++ regex boost iterator

我使用Boost来匹配字符串中的子串.Io迭代结果,我需要使用regex_iterator().

这是我找到的唯一用法示例,但我不理解回调.有人可以给我一个功能的例子吗?


让我们假设我的输入文本是:

"Hello everybody this is a sentense
Bla bla 14 .. yes 
date 04/15/1986 
"
Run Code Online (Sandbox Code Playgroud)

我想得到:

"Hello" "everybody" "this" "is" "a" "sentense" "bla" "yes" "date"
Run Code Online (Sandbox Code Playgroud)

Éri*_*ant 9

如果您不理解的示例的唯一部分是回调,请考虑:

std::for_each(m1, m2, &regex_callback);
Run Code Online (Sandbox Code Playgroud)

大致相当于:

for (; m1 != m2; ++m1){
    class_index[(*m1)[5].str() + (*m1)[6].str()] = (*m1).position(5);
}
Run Code Online (Sandbox Code Playgroud)

假设在你的情况下,你想要将所有匹配存储在一个向量中,你会写一些类似于:

//Warning, untested:
boost::sregex_iterator m1(text.begin(), text.end(), expression);
boost::sregex_iterator m2;
std::vector<std::string> tokens;
for (; m1 != m2; ++m1){
    tokens.push_back(m1->str()).
}
Run Code Online (Sandbox Code Playgroud)