• regex_match 整个字符串是否匹配 (通过cmatch存储匹配的结果),match[0]代表整个匹配序列,match[1]代表第1个匹配后的子序列,match[2]代表第2个匹配后的子序列

代码示例:

 1    regex reg("^select ([a-zA-Z]*) from ([a-zA-Z]*) to ([a-zA-Z]*)$");
cmatch what;//匹配的词语检索出来
bool isit = regex_match("select id from admin to adminmin", what, reg);
if (isit)
{
cout << what.size() << endl;
//输出匹配的信息
for (int i = ; i < what.size(); i++)
{
cout << i << " " << what[i].first << endl;
} cout << "匹配" << endl;
}
else
{
cout << "不匹配" << endl;
}
 1   //^开头 ()组 []可供选择的集合 {}几次 $结尾 |或者
regex reg("^(1[3|4|5|7|8][0-9]{9})");
string str1;
cin >> str1;
bool isit = regex_match(str1, reg);//进行匹配,不需要返回结果
if (isit)
{
cout << "OK" << endl;
}
else
{
cout << "not OK" << endl;
}

regex_search 整个字符串进行查找判断是否含有指定数据类型

 void main()
{
//代表查找数字
regex reg("\\d+|([a-z])+|([A-Z]+)");
char str[] = "HELLO hello 1234 hello 111---134--324-@@@@";
//查找匹配的数字
bool isOK = regex_search(str, reg);
if (isOK)
{
cout << "含有指定数据类型" << endl;
}
cin.get();
}
  • regex_replace 按照正则表达式进行替换

         cmatch match;
    //代表查找数字
    regex reg("\\d+");
    char str[] = "hello 1234 hello 111---134";
    //把数字都换成12345
    cout << regex_replace(str, reg, "") << endl;
    cin.get();
  • regex_match与smatch存放正则表达式单匹配的字符串
     //日期正则表达式
    regex reg("^(\\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|[1-2][0-9]|3[0-1])$");
    string str1;
    getline(cin,str1);
    cout << str1 << endl;
    smatch m;//帮助转换
    if (regex_match(str1, m, reg))
    {
    //m[0]忽略
    int year = atoi(m[].str().c_str());//汇总全部
    int month = atoi(m[].str().c_str());//1,2,3挨个
    int day = atoi(m[].str().c_str());
    cout << "OK" << endl;
    cout << year << month << day << endl;
    }
    else
    {
    cout << "NO" << endl;
    }
  • sregex_token_iterator 根据特定字符拆分数据,并把拆分的数据存放在vector数组中
     //正则表达式拆分
    #include <iostream>
    #include <cstdlib>
    #include <regex>
    #include <string>
    #include <vector>
    using namespace std; void main()
    {
    //通过中间所出现的字符截断 前提是前后对称 []里面是截断的字符 +表示一个或多个
    regex reg("\\s*[,#;' ']+\\s*");
    string str;
    getline(cin, str);
    //迭代器,拆分字符串
    sregex_token_iterator end;
    vector<string> myv;
    // 开始 结束 正则表达式检索 -1检索结束
    for (sregex_token_iterator it(str.begin(), str.end(), reg, -); it != end; it++)
    {
    //cout << *it << endl;
    //把拆分的数据存储到vector数组中
    myv.push_back(*it);
    }
    //打印存储的结果
    for (auto i : myv)
    {
    cout << i << endl;
    } cin.get();
    }

59.C++与正则表达式的更多相关文章

  1. Java RE (正则表达式)

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则) ...

  2. Android 中正则表达式工具类

    package com.example.administrator.magiclamp.utils; import java.util.regex.Pattern; /** * 校验器:利用正则表达式 ...

  3. java RE(正则表达式)

    验证姓名,邮箱,手机号,密码 import java.util.regex.Pattern; /** * 账户相关属性验证工具 * */ public class AccountValidatorUt ...

  4. 如何优雅地使用Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...

  5. 如何优雅地使用 Sublime Text

    Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比 于难于上手的Vim,浮肿沉重的Ecli ...

  6. 【网络资料】如何优雅地使用Sublime Text3

    如何优雅地使用Sublime Text3 Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相 ...

  7. JavaScript基本知识点整理(超实用)

      絮叨絮叨                   今天给大家分享一下这两天自己整理的JavaScript部分的笔记,下面都是我觉得比较常用的,希望能帮助到大家! 1. 导入JS的三种方式 ①在HTML ...

  8. RE validator

    package com.office.utility;   import java.util.regex.Pattern;   /**  * 校验器:利用正则表达式校验邮箱.手机号等  *  * @a ...

  9. java常用正则校验工具类

    正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...

随机推荐

  1. Android-加载大图避免OOM

    高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...

  2. Kinect 人机交互开发实践

    Kinect for Windows SDK 骨骼追踪 —— 对在Kinect视野范围内移动的一个或两个人进行骨骼追踪,可追踪到人体的20个节点 深度摄像头 —— 通过深度传感器获取到视野内的环境三维 ...

  3. 2018年湘潭大学程序设计竞赛 maze(bfs)

    链接:https://www.nowcoder.com/acm/contest/105/F来源:牛客网 有q个单向传送阵,每个传送阵各有一个入口和一个出口,入口和出口都在迷宫的格子里,当走到或被传送到 ...

  4. hp服务器安装exsi5.5

    启动按f8进入raid制造页面: 1.  插入exsi5.5光盘 2.  按下开机键(开机比较慢需要等待一段时间) 3.  进入启动项目界面(插入光盘后启动会让你选择启动项.选择1光盘启动) 接下来按 ...

  5. NetBios, NetBios over TCP/IP, SMB 之间的关系

    首先提到的是NetBios,NetBios是Network Basic Input/Output System的缩写,提供了一种允许局域网内不同电脑能够通信的功能.严格来说,NetBios是一套API ...

  6. AOC 电视机T3212M 进入 工厂模式方法,修改开机启动方式

    原启动方式: 通电,再按遥控 器上  “开机” 希望改成:  通电直接打开电视 方法: 1. 按遥控器上的 menu  1147  进入 工厂模式 2.  选择   7  General Settin ...

  7. P3066 [USACO12DEC]逃跑的BarnRunning Away From… 树上差分_树上倍增

    code: #include <cstdio> using namespace std; #define ll long long const int N=200005; int n,fa ...

  8. JS由Number与new Number的区别引发的思考

    在回答园子问题的时候发现了不少新东西,写下来分享一下 == 下面的图就是此篇的概览,另外文章的解释不包括ES6新增的Symbol,话说这货有包装类型,但是不能new... 基于JS是面向对象的,所以我 ...

  9. 关于vue自定义事件中,传递参数的一点理解

    例如有如下场景 先熟悉一下Vue事件处理 <!-- 父组件 --> <template> <div> <!--我们想在这个dealName的方法中传递额外参数 ...

  10. Android笔记---Intent实现Activity跳转

    学了之前的Android控件以及布局,我们就能够做一些UI的设计了,这里我结合之前的知识.以一个小的登录项目来解说下Activity之间跳转. 先看下效果图: 1.登录界面: 2.点击登录按钮跳转到另 ...