To sam uradio u prvom prolazu:
Kôd:
std::set<std::wstring> s_words;
for(std::size_t i = 0; i < v_utf16_lines.size(); ++i)
{
std::wregex pattern(L"[\\u0400-\\u04FF]+");
const std::wsregex_token_iterator end;
std::wsregex_token_iterator ti(v_utf16_lines[i].begin(), v_utf16_lines[i].end(), pattern);
for(; ti != end; ++ti)
{
s_words.insert(*ti);
}
}
sad "s_words" sadrzi sve "unikatne" reci.
I onda drugi prolaz koristim taj set reci da proverim koliko puta se ponavlja svaka ta rec:
Kôd:
std::set<std::wstring>::iterator send = s_words.end();
std::set<std::wstring>::iterator sit = s_words.begin();
for(; sit != send; ++sit)
{
std::size_t w_freq = 0;
std::wstring pttr = L"(?<=[^\u0400-\u04FF])(?=[\u0400-\u04FF])" + (*sit) + L"(?<=[\u0400-\u04FF])(?=[^\u0400-\u04FF])";
std::wregex pattern(pttr);
.....
}
ali ne podrzava lookaround.
Mislim, mogu to sve u prvom prolazu, ali dajem sebi za primer ako trazim bas neku specificnu rec, recimo:
Kôd:
nadji rec: и
u: Свекрва се не сећа да је и она некад снаха била.
ovde ima 2 и аli mi treba samo kao rec, znaci treba da matchuje 1.