我需要根據通過正則表達式找到的令牌將字符串拆分爲「字符串塊」。我還需要令牌本身保存爲最後的字符串塊C++基於/使用(boost)正則表達式的分割字符串來找到令牌
這裏的一部分是顯示的,我什麼複雜的正則表達式和輸入字符串後:https://regex101.com/r/bR9gW9/1
我試圖做一個簡單的例子,但它編譯失敗:http://cpp.sh/9qifd
#include <iostream>
#include <string>
#include <boost/regex.hpp>
#include <vector>
using namespace std;
int main()
{
string data = "TAKE some stuff\nTAKE other stuff\nTAKE more stuff\n";
boost::regex separate_take_chunks("TAKE");
vector<string> take_chunks;
//boost::sregex_token_iterator i(data.begin(), data.end(), separate_take_chunks, -1);
boost::sregex_token_iterator j;
//while (i != j) cout << *i++;
}
下面是使用正則表達式的std其中工程,但它並沒有給我的令牌http://cpp.sh/2jlv
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
string data = "TAKE some stuff\nTAKE other stuff\nTAKE more stuff\n";
std::regex separate_take_chunks("TAKE");
std::sregex_token_iterator iter(data.begin(), data.end(), separate_take_chunks, -1);
std::sregex_token_iterator end;
for (; iter != end; ++iter)
std::cout << *iter << "---\n";
}
這裏是不使用正則表達式,但如果我可以用正則表達式替換查找功能,這將很好地工作:
size_t p1 = 4;
size_t p2 = 0;
while (p2 != string::npos) {
p2 = data.find("TAKE\n", p1);
take_chunks.push_back(data.substr(p1-4, p2));
p1 = p2+4;
}