我搜索过,找不到任何东西.为了不浪费我的时间来回答其他人明显的答案,我在这里问.目前为止只有一个有用的网站是这个网站:http://softwareramblings.com/2008/07/regular-expressions-in-c.html但样本过于简单.我正在使用Visual Studio 2010.
#include <regex>
[...]
string seq = "Some words. And... some punctuation.";
regex rgx("\w");
smatch result;
regex_search(seq, result, rgx);
for(size_t i=0; i<result.size(); ++i){
cout << result[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)
预期产出将是:
一些
单词
和
一些
标点符号
谢谢.
这里有一些事情.
首先,你的正则表达式字符串需要进行\转义.毕竟它仍然是一个C++字符串.
regex rgx("\\w");
Run Code Online (Sandbox Code Playgroud)
此外,正则表达式\w只匹配一个"单词字符".如果要匹配整个单词,则需要使用:
regex rgx("\\w+");
Run Code Online (Sandbox Code Playgroud)
最后,为了遍历所有可能的匹配,那么您需要使用迭代器.这是一个完整的工作示例:
#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main()
{
string seq = "Some words. And... some punctuation.";
regex rgx("\\w+");
for( sregex_iterator it(seq.begin(), seq.end(), rgx), it_end; it != it_end; ++it )
cout << (*it)[0] << "\n";
}
Run Code Online (Sandbox Code Playgroud)