STL 正则表达式-regex运用

2024-04-09 13:58

本文主要是介绍STL 正则表达式-regex运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

// Algorithm.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "MainFrame.h"
#include <fstream>
#include <locale>
#include <regex>
using namespace std;int main()
{regex rTime("(?:[0]?[0-9]|1[0-9]|2[0-3])(:(?:0?[0-9]|[1-5][0-9])){2}");//输入时间,判断是否满足格式(00:00:00)string str;while (true){cin >> str;if (str == "q") break;if (regex_match(str, rTime)){cout << "the time : " << str << endl;}else{cout << "Invalid date!" << endl;}}//匹配一个或者多个字母切结尾为dayregex reg1("\\w+day");string s1 = "saturday";string s2 = "saturday and sunday";smatch r1;smatch r2;cout << boolalpha << regex_match(s1, r1, reg1) << endl;cout << boolalpha << regex_match(s2, r2, reg1) << endl;cout << "s1匹配结果:" << r1.str() << endl;cout << "s2匹配结果:" << r2.str() << endl;cout << endl;cout << "-------------regex_search-------" << endl;smatch rr1;smatch rr2;cout << boolalpha << regex_search(s1, rr1, reg1) << endl;cout << "s1匹配结果:" << rr1.str() << endl;cout << boolalpha << regex_search(s2, rr2, reg1) << endl;cout << "s2匹配结果:" << rr2.str() << endl;cout << endl;cout << "iterator结果:" << endl;sregex_iterator it(s2.begin(), s2.end(), reg1);sregex_iterator end;for (; it != end; ++it){cout << it->str() << endl;//cout << *it << endl; 错误}cout << endl;cout << "token_iterator结果:" << endl;sregex_token_iterator tit(s2.begin(), s2.end(), reg1);sregex_token_iterator tend;for (; tit != tend; ++tit){cout << tit->str() << endl;//cout << *tit << endl;}cout << endl;//匹配IPregex reg2("(\\d{1,3}):(\\d{1,3}):(\\d{1,3}):(\\d{1,3})");string ip = "192:168:1:1";smatch m;regex_match(ip, m, reg2);cout << "输出:str()" << endl;cout << m.str() << endl;cout << m.str(1) << endl;cout << m.str(2) << endl;cout << m.str(3) << endl;cout << m.str(4) << endl;cout << "输出:[i]" << endl;cout << m[0] << endl;cout << m[1] << endl;cout << m[2] << endl;cout << m[3] << endl;cout << m[4] << endl;cout << endl;//输出结果同上//regex_search(ip, m, str2);cout << endl;string ip2 = "0:11:222:333 4:55:66:7";sregex_iterator ip_it(ip2.begin(), ip2.end(), reg2);sregex_iterator ip_end;for (; ip_it != ip_end; ++ip_it){cout << ip_it->str() << endl;cout << ip_it->str(1) << endl;cout << ip_it->str(2) << endl;cout << ip_it->str(3) << endl;cout << ip_it->str(4) << endl;}return 0;
}

这篇关于STL 正则表达式-regex运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888337

相关文章

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

C++ STL 适配器

系列文章目录 模板特例化,偏特化,左右值引用 https://blog.csdn.net/surfaceyan/article/details/126794013 C++ STL 关联容器 https://blog.csdn.net/surfaceyan/article/details/127414434 C++ STL 序列式容器(二) https://blog.csdn.net/surfac

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

匹配电子邮件地址的正则表达式

这个正则表达式 QRegularExpression regex(R"((\w+)(\.|_)?(\w+)@(\w+)(\.(\w+))+))"); 用于匹配电子邮件地址的格式。下面是对这个正则表达式的逐步解析和解释: 1. QRegularExpression 构造函数 QRegularExpression regex(R"((\w+)(\.|_)?(\w*)@(\w+)(\.(\w+))+

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

js正则表达式test方法的问题

今天在网上碰到一个帖子,写了一个关于Regex的奇怪现象,(文章来源http://www.php100.com/html/webkaifa/javascript/2007/0109/1866.html) 代码如下 <script type="text/javascript"><!--var re = /^\d+(?:\.\d)?$/ig; alert(re.test('112.3'