我正在尝试使用Boost :: regex将句子拆分成单个单词。
但这不是最后的决定。
任何想法有什么问题吗?

代码是:

#include <iostream>
#include <boost/regex.hpp>
using namespace std;
using namespace boost;

int main() {
smatch matchResults;
regex whiteChars("(.*?)[\\s]");
string p = "This is a sentence";
for(string::const_iterator sit = p.begin(), sitend = p.end(); sit != sitend;)
{
    regex_search(sit, sitend, matchResults, whiteChars);
    if(matchResults[1].matched)
        cout << matchResults[1] << endl;
    sit = matchResults[0].second;
}
return 0;
}

Output:
This
is
a
Expected Output:
This
is
a
sentence

最佳答案

您的最后一个单词后面是$,而不是\\s,因此您当前的正则表达式-"(.*?)[\\s]"将与之不匹配。

您可以尝试以下方法:

"(.*?)(?:\\s|$)"


甚至更好,这可能也可以:

([^\\s]*)  // Just get all the non-space characters. That is what you want

10-06 07:11