Поиск с использованием регулярных выражений C++

Я использую Boost.Regex для достижения чего-то вроде этого: поиск "|" а затем возьмите левую часть "|" и поместите его в строку, то же самое с правой частью:

string s1;
string s2;
who | sort

После этого s1 должно быть "who", а s2 должно быть "sort".
Если я хорошо помню, это было возможно в Python, как я могу сделать это, используя регулярные выражения в Boost?

Спасибо.

2 ответа

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

Разбить строку в C++?

Вот краткий пример:

#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.

Другие вопросы по тегам