59.C++与正则表达式
- 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++与正则表达式的更多相关文章
- Java RE (正则表达式)
正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则) ...
- Android 中正则表达式工具类
package com.example.administrator.magiclamp.utils; import java.util.regex.Pattern; /** * 校验器:利用正则表达式 ...
- java RE(正则表达式)
验证姓名,邮箱,手机号,密码 import java.util.regex.Pattern; /** * 账户相关属性验证工具 * */ public class AccountValidatorUt ...
- 如何优雅地使用Sublime Text
Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于难于上手的Vim,浮肿沉重的Eclip ...
- 如何优雅地使用 Sublime Text
Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比 于难于上手的Vim,浮肿沉重的Ecli ...
- 【网络资料】如何优雅地使用Sublime Text3
如何优雅地使用Sublime Text3 Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相 ...
- JavaScript基本知识点整理(超实用)
絮叨絮叨 今天给大家分享一下这两天自己整理的JavaScript部分的笔记,下面都是我觉得比较常用的,希望能帮助到大家! 1. 导入JS的三种方式 ①在HTML ...
- RE validator
package com.office.utility; import java.util.regex.Pattern; /** * 校验器:利用正则表达式校验邮箱.手机号等 * * @a ...
- java常用正则校验工具类
正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...
随机推荐
- Android-加载大图避免OOM
高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...
- Kinect 人机交互开发实践
Kinect for Windows SDK 骨骼追踪 —— 对在Kinect视野范围内移动的一个或两个人进行骨骼追踪,可追踪到人体的20个节点 深度摄像头 —— 通过深度传感器获取到视野内的环境三维 ...
- 2018年湘潭大学程序设计竞赛 maze(bfs)
链接:https://www.nowcoder.com/acm/contest/105/F来源:牛客网 有q个单向传送阵,每个传送阵各有一个入口和一个出口,入口和出口都在迷宫的格子里,当走到或被传送到 ...
- hp服务器安装exsi5.5
启动按f8进入raid制造页面: 1. 插入exsi5.5光盘 2. 按下开机键(开机比较慢需要等待一段时间) 3. 进入启动项目界面(插入光盘后启动会让你选择启动项.选择1光盘启动) 接下来按 ...
- NetBios, NetBios over TCP/IP, SMB 之间的关系
首先提到的是NetBios,NetBios是Network Basic Input/Output System的缩写,提供了一种允许局域网内不同电脑能够通信的功能.严格来说,NetBios是一套API ...
- AOC 电视机T3212M 进入 工厂模式方法,修改开机启动方式
原启动方式: 通电,再按遥控 器上 “开机” 希望改成: 通电直接打开电视 方法: 1. 按遥控器上的 menu 1147 进入 工厂模式 2. 选择 7 General Settin ...
- P3066 [USACO12DEC]逃跑的BarnRunning Away From… 树上差分_树上倍增
code: #include <cstdio> using namespace std; #define ll long long const int N=200005; int n,fa ...
- JS由Number与new Number的区别引发的思考
在回答园子问题的时候发现了不少新东西,写下来分享一下 == 下面的图就是此篇的概览,另外文章的解释不包括ES6新增的Symbol,话说这货有包装类型,但是不能new... 基于JS是面向对象的,所以我 ...
- 关于vue自定义事件中,传递参数的一点理解
例如有如下场景 先熟悉一下Vue事件处理 <!-- 父组件 --> <template> <div> <!--我们想在这个dealName的方法中传递额外参数 ...
- Android笔记---Intent实现Activity跳转
学了之前的Android控件以及布局,我们就能够做一些UI的设计了,这里我结合之前的知识.以一个小的登录项目来解说下Activity之间跳转. 先看下效果图: 1.登录界面: 2.点击登录按钮跳转到另 ...