1.日期拆分 由于日期是固定格式的,如1994/01/08 因此使用regex_match 可以进行结果的匹配
int main3()
{
//1999 12 25
regex reg("^(\\d{4})/(0?[1-9]|1[0-2]])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
string str1;
//cin >> str1;
getline(cin, str1); //遇到斜跨n结束
cout << str1;
smatch m; //帮助转换
if(regex_match(str1, m, reg))
{
//m[0]忽略
int year = atoi(m[1].str().c_str()); //把字符串转换为整数
int month = atoi(m[2].str().c_str());
int day = atoi(m[3].str().c_str());
cout << "\n\n";
cout << year << month << day <<endl;
cout << "OK";
}else{
cout << "NO";
}
cin.get();
return 0;
}
2.符号的拆分,如sregex_token_iterator 可以进行循环的拆分
int main()
{
regex reg("\\s*[,#,:]+\\s*");
//char str[100] = {0};
string str; //123, 123, 123,
getline(cin, str);
//迭代器
sregex_token_iterator end; //拆分字符串
vector<string>myv;
for(sregex_token_iterator it(str.begin(), str.end(), reg,-1); it != end; it++) {
myv.push_back(*it);
cout << *it << endl;
}
for(auto i : myv)
{
cout << i << endl;
}
}
3.根据匹配循环查找里面的邮箱信息
//查找
int main2()
{
regex reg("\\w+([-+.]w+)*@\\w+([-.]\\w+)*.\\w+([-.]\\w+)*");
//char str[100] = {0};
string mystr("未认证暂不开发 3023476735@qq.com 未认证 123456@qq.com");
//迭代器
smatch m;
if(regex_search(mystr, m, reg))
{
for(int i = 0; i != m.size(); i++) {
cout << m[i].str().c_str() << endl;
}
cout << "can find";
} else {
cout << "can not find";
}
cin.get();
}
原文链接: https://www.cnblogs.com/my-love-is-python/p/15063947.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/212543
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!