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 }