当前位置: 首页 > news >正文

[C++][正则表达式]常用C++正则表达式用法

1、匹配字符串是否包含某些字符,可以使用regex_match,但是这个是全字匹配,不能部分匹配,比如

代码语言:javascript

代码运行次数:0

运行

AI代码解释

using namespace std;
int main()
{std::string str = "1234";std::regex reg("\\d+");bool ret = std::regex_match(str, reg);if (ret){std::cout << "have" << std::endl;}else{std::cout << "no" << std::endl;}getchar();
}

结果为have,但是你把str换成abc123就是no,因为它需要全字匹配,你可以把正则表达改成abc\\d+,如果你需要部分匹配可以使用下面例子

代码语言:javascript

代码运行次数:0

运行

AI代码解释

#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{std::string str = "abc123";std::regex reg("\\d+");bool ret = std::regex_search(str, reg);if (ret){std::cout << "have" << std::endl;}else{std::cout << "no" << std::endl;}getchar();
}

2、匹配字符串里面一个子字符串。比如abc123efg456只匹配到第一个返回。

代码语言:javascript

代码运行次数:0

运行

AI代码解释

#include <iostream>
#include <regex>
#include <string>
using namespace std;int main() {std::regex reg("\\d+");std::cmatch m;auto ret = std::regex_search("abc123efg456", m, reg);if (ret){for (auto& elem : m)std::cout << elem << std::endl;}std::cout << "prefix:" << m.prefix() << std::endl;std::cout << "suffix:" << m.suffix() << std::endl;getchar();
}

输出:

代码语言:javascript

代码运行次数:0

运行

AI代码解释

123
prefix:abc
suffix:efg456

3、正则替换

将所有的字符串数字替换成空

代码语言:javascript

代码运行次数:0

运行

AI代码解释

#include <iostream>
#include <regex>
#include <string>
using namespace std;int main() {std::regex reg("\\d+");std::string str = "abc123efg456";std::string res = std::regex_replace(str,  reg,"");std::cout << res << std::endl;getchar();
}

输出:

abcefg

4、求出字符串所有匹配到的结果,比如提取字符串中所有数字

代码语言:javascript

代码运行次数:0

运行

AI代码解释

#include <iostream>
#include <regex>
#include <string>
using namespace std;int main() {std::regex reg("(\\d+)");std::string str = "abc123efg456jkp789";std::smatch m;sregex_iterator pos(str.cbegin(), str.cend(), reg);sregex_iterator end;for (; pos != end; ++pos){std::cout<<pos->str(0)<<"\n";}getchar();
}

输出结果:

123 456 789

5、提取正则子表达式内容

代码语言:javascript

代码运行次数:0

运行

AI代码解释

#include <iostream>
#include <regex>
#include <string>
using namespace std;int main() {std::regex reg("(\\d+)");std::string str = "abc123efg456jkp789";std::smatch m;sregex_token_iterator pos(str.cbegin(), str.cend(), reg, 1);// 表示第一个分组,再换成0、2、-1感受一下sregex_token_iterator end;for (; pos != end; ++pos){std::cout<<pos->str()<<"\n";}getchar();
}

输出结果:

123 456 789

http://www.dtcms.com/a/535740.html

相关文章:

  • 基于大数据的短视频数据分析系统 Spark哔哩哔哩视频数据分析可视化系统 Hadoop大数据技术 情感分析 舆情分析 爬虫 推荐系统 协同过滤推荐算法 ✅
  • 参考抖音推荐算法的功能:不同用户规模的推荐技术框架
  • 深入理解C语言scanf函数:从基础到高级用法完全指南
  • 检测相邻递增子数组1 2(LeetCode 3349 3350)
  • 《算法闯关指南:优选算法--前缀和》--25.【模板】前缀和,26.【模板】二维前缀和
  • 快速搭建网站2020缅甸新闻最新消息
  • 搜索网站做推广全网推广平台推荐
  • 仓颉编程(16)泛型类型
  • 「小有可为」AI 开源公益创新挑战赛
  • 《 Linux 点滴漫谈: 四 》文件权限与用户管理
  • 评估虚拟机资源规划
  • 深入理解 SO_REUSEADDR:从“Address already in use”到服务器瞬间重启
  • 机器人中的多模态——RoboBrain
  • MySQL 8.0.x 全平台安装指南:Windows、CentOS、Ubuntu 详细步骤与问题解决
  • YOLO!!
  • 电子电气架构 --- 汽车座舱行业背景综述
  • C++(23):通过print和printIn进行输出
  • 获取网站访客qq号成都网站建设优点
  • 做一个同城便民信息网站怎么做公司给别人做的网站违法吗
  • 微算法科技(NASDAQ MLGO)探索自适应差分隐私机制(如AdaDP),根据任务复杂度动态调整噪声
  • 入选大模型一体机产业图谱,云从科技以全栈能力推动AI落地新范式
  • 十六、STM32的TIM(七)(PWM直流电机)
  • TCP与UDP深度理解
  • 万界星空科技MES系统功能介绍及实施指南
  • 中国软件出海,为何优选亚马逊云科技Marketplace?
  • StarRocks Community Monthly Newsletter (Sep)
  • HarmonyOS 微服务与 OpenHarmony 开发:构建模块化与开源生态应用
  • autojs----2025淘宝淘金币跳一跳自动化
  • 什么网站可以做兼职赚钱吗互联网商城建设
  • 地方网站系统建模素材免费网站