我有一个代码从正则表达式返回所有匹配但我不能使用匹配,例如我想cout只是第二个结果,如匹配[1]或匹配[2]
std::string text("5345345345334 456456454353");
boost::regex regex("[0-9]{10}");
boost::sregex_token_iterator iter(text.begin(), text.end(),regex,0);
boost::sregex_token_iterator end;
for( ; iter != end; ++iter ) {
std::cout<<*iter<<'\n';
有没有办法将* iter转换为匹配[]所以我可以使用每个匹配?谢谢
答案 0 :(得分:0)
这是正确的答案:
只需从你拥有的迭代器创建std::vector
:
std::vector<std::string> v(iter, end);
完整代码:
#include <stdlib.h>
#include <string>
#include <iostream>
#include <boost/regex.hpp>
#include <vector>
int main(int argc, char* argv[]) {
std::string text("5345345345334 456456454353");
boost::regex regex("[0-9]{10}");
boost::sregex_token_iterator iter(text.begin(), text.end(),regex,0);
boost::sregex_token_iterator end;
std::vector<std::string> v(iter, end);
std::cout << "0: " << v[0] << ", 1: " << v[1] << std::endl;
return EXIT_SUCCESS;
}
输出是:
0: 5345345345, 1: 4564564543