boost :: regex匹配[] c ++

时间:2014-09-17 18:55:59

标签: regex boost

我有一个代码从正则表达式返回所有匹配但我不能使用匹配,例如我想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转换为匹配[]所以我可以使用每个匹配?谢谢

1 个答案:

答案 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