• 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 }
  • 相关阅读:
    C#几种截取字符串的方法小结
    KinSlideshow参数设置说明
    WinForm程序中两份mdf文件问题的解决
    全国省市数据库
    ASP.NET项目中使用CKEditor +CKFinder 实现上传图片
    mht文件无法打开的解决办法
    Non-parametric tests
    Plot transpant lines in Matleb 在Matlab中绘制透明线条
    Which HRV method to use: FFT or Autoregressive?
    SPM How-tos SPM预处理及统计分析指南
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8759054.html
Copyright © 2020-2023  润新知