146.正则表达式

  1 #include <regex>
  2 #include <iostream>
  3 #include <cstdlib>
  4 #include <locale>
  5 using namespace std;
  6 
  7 void main1()
  8 {
  9     //精确匹配
 10     //regex reg("1234");
 11     //匹配四个数字
 12     //regex reg("\d{4}");
 13     //15861808327 手机号检测
 14     //regex reg("1\d{10}");
 15     //2018/4/9
 16     //regex reg("\d{4}/\d{2}/\d{2}");
 17     //?有没有都可以
 18     regex reg("^\d{4}/(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
 19     while (true)
 20     {
 21         cout << "请输入日期" << endl;
 22         string str;
 23         if (!getline(cin, str) || str == "q")
 24         {
 25             break;
 26         }
 27 
 28         if (regex_match(str, reg))
 29         {
 30             cout << "OK" << endl;
 31         }
 32         else
 33         {
 34             cout << "NO" << endl;
 35         }
 36     }
 37     cin.get();
 38 }
 39 
 40 //挖掘匹配的字符串
 41 void main2()
 42 {
 43     //精确匹配
 44     //regex reg("1234");
 45     //匹配四个数字
 46     //regex reg("\d{4}");
 47     //15861808327 手机号检测
 48     //regex reg("1\d{10}");
 49     //2018/4/9
 50     //regex reg("\d{4}/\d{2}/\d{2}");
 51 
 52     regex reg("^\d{4}/([0]*?[1-9]|1[0-2])/([0]*?[1-9]|[1-2][0-9]|3[0-1])$");
 53     while (true)
 54     {
 55         cout << "请输入日期" << endl;
 56         string str;
 57         if (!getline(cin, str) || str == "q")
 58         {
 59             break;
 60         }
 61 
 62         smatch m;//进行检测与匹配
 63         if (regex_match(str, m, reg))
 64         {
 65             int year = atoi(m[0].str().c_str());
 66             int month = atoi(m[1].str().c_str());
 67             int day = atoi(m[2].str().c_str());
 68             cout << "year = " << year << endl;
 69             cout << "month = " << month << endl;
 70             cout << "day = " << day << endl;
 71             cout << "OK" << endl;
 72         }
 73         else
 74         {
 75             cout << "NO" << endl;
 76         }
 77 
 78 
 79         /*if (regex_match(str, reg))
 80         {
 81             cout << "OK" << endl;
 82         }
 83         else
 84         {
 85             cout << "NO" << endl;
 86         }*/
 87     }
 88     cin.get();
 89 }
 90 
 91 //正则表达式迭代挖掘数据
 92 void main()
 93 {
 94     setlocale(LC_ALL, "zh_CN");
 95     //精确匹配
 96     //regex reg("1234");
 97     //匹配四个数字
 98     //regex reg("\d{4}");
 99     //15861808327 手机号检测
100     //regex reg("1\d{10}");
101     //2018/4/9
102     //regex reg("\d{4}/\d{2}/\d{2}");
103     //匹配字母或数字或下划线或汉字
104     regex reg("[\w]+");
105     while (true)
106     {
107         cout << "请输入一串字符" << endl;
108         string str;
109         if (!getline(cin, str) || str == "q")
110         {
111             break;
112         }
113         const sregex_iterator end;
114         for (sregex_iterator it(str.begin(), str.end(), reg); it != end; it++)
115         {
116             cout <<  (*it)[0] << endl;
117         }
118     }
119     cin.get();
120 }
原文地址:https://www.cnblogs.com/xiaochi/p/8759054.html