博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++的正则
阅读量:4841 次
发布时间:2019-06-11

本文共 1109 字,大约阅读时间需要 3 分钟。

C++的正则封装的不丰富.只有最基础的三个主要的函数(也可能是我孤陋寡闻).要有更为丰富的功能需要自己进一步组合.

我目前只需要循环查找这个功能,并且我也不知道c++的正则支持正则的哪些功能;

代码如下,后面要用到其他的诸如替换之类的功能在来补充

#include
#include
#include
#include
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的功能:

//Regular是正则表达式//text是被匹配的文本//函数功能是返回文本中所有被匹配的值//此函数依赖vector库,regex库,string库vector
findall(string Regular, string &text){ vector
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;}

  

转载于:https://www.cnblogs.com/love-DanDan/p/10700508.html

你可能感兴趣的文章
vue 运行npm run dev报错
查看>>
HDU 1233 还是畅通工程
查看>>
HTTP状态码
查看>>
ArcEngine实现坐标转换和投影(转载)
查看>>
solr集群SolrCloud(solr+zookeeper)windows搭建
查看>>
LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)
查看>>
51nod 1351 吃点心(贪心)
查看>>
Vim配置(python版)
查看>>
内核开发基础3——Linux内核配置与编译
查看>>
计算机组成原理复习
查看>>
BUPT复试专题—中序遍历序列(2013)
查看>>
【常见Web应用安全问题】---7、CRLF injection
查看>>
php7.2.1 安装
查看>>
用winrar解压时提示无法设置安全数据 拒绝访问的解决方法
查看>>
诡异的数学,数字问题 - leetcode
查看>>
交换输出
查看>>
设计模式-策略模式&状态模式&访问者模式
查看>>
python学习第三十三节(IO模型)
查看>>
linux pci 驱动小结
查看>>
BZOJ2744: [HEOI2012]朋友圈
查看>>