我想按 <=>
或 =>
的外观拆分每一行所以我有2个分隔符,每个分隔符都超过一个角色
string example="A + B => C + D";
vector <string> leftRight;
boost::algorithm::split_regex( leftRight, example, boost::is_any_of( " <=> +| => " ));
我的预期结果是这样的:
leftright[0]= A+B
leftright[1]= C+D
答案 0 :(得分:1)
那么,让我们看一下boost::algorithm::split_regex
。你做得很好,直到最后一个参数。该函数需要将boost :: regex作为最后一个参数,boost::is_any_of
不提供其中一个参数。
您的用例的合理正则表达式将是这样的:
boost::regex r("(<=>)|(=>)");
如果我们将所有这些放在一起:
#include <vector>
#include <string>
#include <iostream>
#include <boost/regex.hpp>
#include <boost/algorithm/string/regex.hpp>
int main() {
std::string example="A + B => C + D";
std::vector <std::string> leftRight;
boost::regex r("(<=>)|(=>)");
boost::algorithm::split_regex(leftRight, example, r);
for (int i=0; i<leftRight.size(); ++i)
std::cout << "\"" << leftRight[i] << "\"\n";
}
我们得到一个输出:
"A + B "
" C + D"