我正在使用 Boost.Regex 来实现这样的目标:搜索“|” 然后取“|”的左边部分 并将其放入一个字符串,与右侧部分相同:
string s1;
string s2;
who | sort
在此之后 s1 应该是“谁”,而 s2 应该是“排序”。
如果我没记错的话,它在 Python 中是可行的,我如何在 Boost 中使用正则表达式来做到这一点?
谢谢你。
我正在使用 Boost.Regex 来实现这样的目标:搜索“|” 然后取“|”的左边部分 并将其放入一个字符串,与右侧部分相同:
string s1;
string s2;
who | sort
在此之后 s1 应该是“谁”,而 s2 应该是“排序”。
如果我没记错的话,它在 Python 中是可行的,我如何在 Boost 中使用正则表达式来做到这一点?
谢谢你。
#include <boost/algorithm/string.hpp>
std::vector<std::string> strs;
boost::split(strs, "string to split", boost::is_any_of("|"));
这是简短的示例:
#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。