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 ...
随机推荐
- AngularJs轻松入门(六)表单校验
表单数据的校验对于提高WEB安全性意义不大,因为服务器接收到的请求不一定来自我们的前端页面,有可能来自别的站点,黑客可以自己做一个表单,把数据提交到我们的服务器(即跨站伪造请求),这样就绕过了前端页面 ...
- PostgreSQL Replication之第四章 设置异步复制(1)
执行完您的第一个即时恢复(PITR,Point-In-Time-Recovery),我们准备在一个真正的复制设置上工作.在本章,您将学会如何设置异步复制和流.我们的目标是确保您可以实现更高的高可用和更 ...
- vue 实现 点击取消监控内容是否发生修改 若修改提示 是否需要保存
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- hdu 4825 xor sum(字典树+位运算)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)Total S ...
- DedeCMS筛选简单实现方法不改后台源文件
笔者在前面几篇文章中提到的dedecms筛选的实现方法,对新手来说实现过程较复杂.接下来分享一个最简单的实现在移动端上筛选功能. 最近在筹备移动端企业站,实现功能有:实现一个管理后台管理PC端和移动端 ...
- 洛谷1525 关押罪犯NOIP2010 并查集
问题描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示某两 ...
- Spring学习详解(1)——Spring入门详解
一:spring的基本用法: 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中的java组件, ApplicationContext ctx = ne ...
- python main函数
关于Python的主(main)函数问题 2007-07-23 19:14 初次接触Python的人会很不习惯Python没有main主函数.这里简单的介绍一下,在Python中使用main函数的方法 ...
- EChart报表插件使用笔记(1)
报表插件Echart java类 package com.spring.controller; import java.io.IOException; import java.util.Arrays; ...
- HTML——上中下布局
上中下布局是最主要的布局方式,本比如果用户屏幕分辨率为800*600像素. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3Vuc2h1bWlu/font ...