で区切られた 1 行に 4 つの単語があり\n
ます。例: "aa\ne'sboob\ng-coo\nood\nff"
(注: 単語には英字だけでなく、'\n' が含まれていない場合もあります!)
単語レベルで部分一致を実行したい: たとえば、部分一致で"oo"
は が得られます"boob", "coo", and "ood"
。
私は pattern: から始めました。"^(.*?oo.*?)$"
これにより、 が得られます"aa\ne'sboob", "g-coo", and "ood"
。明らか"aa\ne'sboob"
に間違っています。
Boost Regexを使用しています:
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main()
{
std::vector<std::string> v;
std::string text = "aa\ne'sboob\ng-coo\nood\nff";
const char* pattern = "^(.*?oo.*?)$";
boost::regex reg(pattern);
boost::sregex_iterator it(text.begin(), text.end(), reg);
boost::sregex_iterator end;
std::string tmp;
for (; it != end; ++it) {
tmp = it->str();
v.push_back(it->str());
std::cout << tmp << std::endl;
}
std::cout << "total find: " << v.size() << std::endl;
return 0;
}
これについて私を助けてもらえますか?
編集:私は1つのパターンワークを持っていますが、私はそれを理解していません. 解説もお願いします。注: Boost 正規表現を適切に使用するには、おそらく助けが必要です。
編集: 単語には英語の文字だけでなく含まれている可能性があることを明確にします。また、@just-somebody が提案したようにソースを更新します。
どうもありがとう