C++的正则
C++的正则封装的不丰富.只有最基础的三个主要的函数(也可能是我孤陋寡闻).要有更为丰富的功能需要自己进一步组合.
我目前只需要循环查找这个功能,并且我也不知道c++的正则支持正则的哪些功能;
代码如下,后面要用到其他的诸如替换之类的功能在来补充
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include<iostream> #include<string> #include<regex> #include<Windows.h> using namespace std; int main( void ) { string s = "The operation to complete" ; regex r( "\\b\\w+?\\b" ); //字符串构造有点不一样. smatch m; //是个容器. while (regex_search(s, m, r)) { cout << m.str() << endl; s = m.suffix().str(); //关键,实现循环查找的重要步骤. } system ( "pause" ); return 0; } |
输出:
封装一下简单实现类似Python中的findall的功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | //Regular是正则表达式 //text是被匹配的文本 //函数功能是返回文本中所有被匹配的值 //此函数依赖vector库,regex库,string库 vector<string> findall(string Regular, string &text) { vector<string> ret; ret.clear(); regex r(Regular); smatch m; //是个容器. string str=text; while (regex_search(str, m, r)) { ret.push_back(m.str()); str = m.suffix().str(); //关键,实现循环查找的重要步骤. //不加以判断的话可能会无限循环 //比如text的内容是"a".判别式是"\\b.*?\\b",这样就会无限循环,这是属于判别式的锅,因为*代表0-无穷个可能,然后又加了?代表0个或者1个. if (str == text) { return ret; } } return ret; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?