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 }