例如,如果我有一个像“first second third Fourth”这样的字符串,并且我想在一次操作中匹配每个单词以逐个输出。
我只是认为 "(\\b\\S*\\b){0,}"
会起作用。但实际上并没有。
我该怎么办?
这是我的代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
regex exp("(\\b\\S*\\b)");
smatch res;
string str = "first second third forth";
regex_search(str, res, exp);
cout << res[0] <<" "<<res[1]<<" "<<res[2]<<" "<<res[3]<< endl;
}
最佳答案
在 regex_searching 时简单地迭代你的字符串,像这样:
{
regex exp("(\\b\\S*\\b)");
smatch res;
string str = "first second third forth";
string::const_iterator searchStart( str.cbegin() );
while ( regex_search( searchStart, str.cend(), res, exp ) )
{
cout << ( searchStart == str.cbegin() ? "" : " " ) << res[0];
searchStart = res.suffix().first;
}
cout << endl;
}
关于c++ - 如何使用 std::regex 匹配多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667295/