正则表达式,没学会怎么匹配但不捕获,所以只能正则了两遍。
#include<regex>
#include<iostream>
using namespace std;
string str;
int cnt = 0; //计数器
vector<string> v;
int main()
{
getline(cin, str);
regex reg("\".+\"|[^ ]+"); //匹配两个”“之间的内容(包含”“) 或 不含空格的串, 或两边同时满足的时候优先匹配左边的表达式,顺序不能反,否则匹配不到""之间的内容
for(sregex_iterator itr(str.begin(),str.end(),reg),itr_end; itr != itr_end; ++itr)
{
v.push_back(itr->str());
cnt++;
}
cout<<cnt<<endl;
auto itr = v.begin();
while(itr != v.end())
{
regex reg1("\""); //匹配"
cout << regex_replace(*itr, reg1, "") <<endl; //删除" 注意replace返回是处理之后的字符串,没有匹配到则返回原串
++itr;
}
return 0;
}

京公网安备 11010502036488号