使用正则表达式C ++进行搜索

时间:2011-04-18 12:03:54

标签: c++ boost boost-regex

我正在使用Boost.Regex来实现这样的目标:搜索“|”然后取“|”的左边部分并把它放在一个字符串,与右边部分相同:

string s1;
string s2;
who | sort

此后s1应为“who”,s2应为“sort” 如果我记得很好,它在Python中是可行的,我怎么能在Boost中使用正则表达式呢?

谢谢。

2 个答案:

答案 0 :(得分:2)

#include <boost/algorithm/string.hpp>
std::vector<std::string> strs;
boost::split(strs, "string to split", boost::is_any_of("|"));

Split a string in C++?

答案 1 :(得分:2)

这是简短的样本:

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

int main()
{
  // expression
  boost::regex exrp( "(.*)\\|(.*)" );
  boost::match_results<std::string::const_iterator> what;
  // input
  std::wstring input = "who | sort";
  // search
  if( regex_search( input,  what, exrp ) ) {
    // found
    std::string s1( what[1].first, what[1].second );
    std::string s2( what[2].first, what[2].second );
  }

  return 0;
}

此外,您可能希望查看Boost.Tokenizer