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

C++ | 使用正则表达式匹配特定形式的字符串

C++ | 使用正则表达式匹配特定形式的字符串

在 C++ 中,可以使用 <regex> 头文件提供的正则表达式库来对特定形式的字符串进行匹配操作。

常用的正则表达式模式语法

  1. 普通字符

    • 普通字符会按照其字面意义进行匹配,例如 a 会匹配字符 a
  2. 转义字符

    • \:用于转义特殊字符,例如 \\ 匹配 \
    • .:匹配除换行符外的任意字符。
  3. 字符类

    • [abc]:匹配字符 a, b, 或 c 中的任意一个。
    • [a-z]:匹配 az 范围内的任意字符。
    • [^abc]:匹配除 a, b, 和 c 之外的任意字符。
  4. 重复次数

    • *:匹配前面的子表达式零次或多次。
    • +:匹配前面的子表达式一次或多次。
    • ?:匹配前面的子表达式零次或一次。
    • {n}:匹配前面的子表达式恰好 n 次。
    • {n,}:匹配前面的子表达式至少 n 次。
    • {n,m}:匹配前面的子表达式至少 n 次但不超过 m 次。
  5. 定位符

    • ^:匹配输入字符串的开始。
    • $:匹配输入字符串的结尾。
    • \b:匹配单词边界。
  6. 捕获组

    • (pattern):捕获匹配的子表达式。
  7. 特殊字符

    • \d:匹配任意数字字符。
    • \w:匹配任意字母、数字或下划线字符。
    • \s:匹配任意空白字符。

使用正则表达式匹配字符串用法示例

#include <iostream>
#include <regex>
#include <string>int main() {std::string input = "(1,2),(2,3),(4,5)";// 定义正则表达式模式std::regex pattern("\\((\\d+),(\\d+)\\)");// 迭代器用于遍历匹配结果std::sregex_iterator it(input.begin(), input.end(), pattern);std::sregex_iterator end;// 遍历匹配结果并输出while (it != end) {std::smatch match = *it;std::cout << "Matched: " << match.str() << std::endl;std::cout << "Group 1: " << match[1].str() << std::endl; // 第一个括号内的数字std::cout << "Group 2: " << match[2].str() << std::endl; // 第二个括号内的数字++it;}return 0;
}

示例输出:

Matched: (1,2)
Group 1: 1
Group 2: 2
Matched: (2,3)
Group 1: 2
Group 2: 3
Matched: (4,5)
Group 1: 4
Group 2: 5

相关文章:

C++ | 使用正则表达式匹配特定形式的字符串

C | 使用正则表达式匹配特定形式的字符串 在 C 中&#xff0c;可以使用 <regex> 头文件提供的正则表达式库来对特定形式的字符串进行匹配操作。 常用的正则表达式模式语法 普通字符&#xff1a; 普通字符会按照其字面意义进行匹配&#xff0c;例如 a 会匹配字符 a。 转…...

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

文章目录 前言第一章 计算机组成原理 概述及各种码1.1 计算机硬件的基本组成1.1.1 存储器1.1.2 运算器1.1.3 控制器 1.2 计算机的工作过程1.3 计算机的性能指标1.4 各个字长区别与联系 第二章 数据的表示与运算2.1 ASCII码2.2 各种码2.3 浮点数 总结 前言 给大家整理了一下计算…...

基于transform的scale属性,动态缩放整个页面,实现数据可视化大屏自适应,保持比例不变形,满足不同分辨率的需求

文章目录 一、需求背景&#xff1a;二、需求分析&#xff1a;三、选择方案&#xff1a;四、实现代码&#xff1a;五、效果预览&#xff1a;六、封装组件&#xff1a; 一、需求背景&#xff1a; 数据可视化大屏是一种将数据、信息和可视化效果集中展示在一块或多块大屏幕上的技…...

Linux第67步_linux字符设备驱动_注册和注销

1、字符设备注册与注销的函数原型” /*字符设备注册的函数原型*/ static inline int register_chrdev(unsigned int major,\ const char *name, \ const struct file_operations *fops) /* major:主设备号&#xff0c;Limnux下每个设备都有一个设备号&#xff0c;设备号分…...

设计模式:软件工程的艺术

引言 设计模式是软件工程中一种解决常见问题的经验总结&#xff0c;是一套可复用的设计思想。它们提供了在特定情境下的解决方案&#xff0c;有助于构建可维护、灵活、可复用、可扩展的软件系统。设计模式是对软件设计中通用问题的抽象&#xff0c;提供了一种共享的语言和思维…...

试题 算法训练 数的潜能

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 将一个数N分为多个正整数之和&#xff0c;即Na1a2a3…ak&#xff0c;定义Ma1*a2*a3*…*ak为N的潜能。   给定N&#xff0c;…...

OpenAI Triton 入门教程

文章目录 Triton 简介背景Triton 与 CUDA 的关系 Triton 开发样例样例一&#xff1a;Triton vector addition 算子Triton kernel 实现kernel 函数封装函数调用性能测试 样例二&#xff1a;融合 Softmax 算子动机Triton kernel 实现kernel 封装单元测试性能测试 样例三&#xff…...

【flask+python】利用魔术方法,更优雅的封装model类

定义model # Time :2024-2024/2/27-14:49 # Email :514422868qq.com # Author :Justin # file :user.py # Software :01-fishbook from app.model.base import Base from sqlalchemy import Column, Integer, SmallInteger, String from werkzeug.security …...

Qt程序设计-报警灯自定义控件实例

本文讲解Qt报警灯自定义控件实例。 实现功能 设置边框和内部颜色。 设置是否闪烁点亮。 添加的报警灯类 #ifndef LIGHT_H #define LIGHT_H#include <QWidget> #include <QDebug> #include <QPainter> #include <QTimer>class Light : public QWid…...

Linux之定时任务02

一、什么是crond Linux 中 crond 就是定时任务&#xff0c;即根据 crond 指定的时间&#xff0c;由系统按指定的时间&#xff0c;周期性&#xff0c;自动触发的事件。 crond 服务在默认的情况下会每分钟检查系统中是否有定时任务&#xff0c;如果有且符合触发条件&#xff0c;…...

PHP堆栈+errLog定位

调用堆栈&#xff08;Call Stack&#xff09;是一个记录了程序在运行时所有活动子例程的栈结构。它以函数调用的方式描述了程序的执行流程和调用关系。 在PHP中&#xff0c;我们可以通过打印PHP调用堆栈来辅助调试和定位代码中的问题。本文将介绍如何在PHP中打印调用堆栈&…...

【大数据】Flink SQL 语法篇(七):Lookup Join、Array Expansion、Table Function

《Flink SQL 语法篇》系列&#xff0c;共包含以下 10 篇文章&#xff1a; Flink SQL 语法篇&#xff08;一&#xff09;&#xff1a;CREATEFlink SQL 语法篇&#xff08;二&#xff09;&#xff1a;WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 语法篇&#xff08;三&…...

【云原生】Spring Cloud Gateway的底层原理与实践方法探究

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &#x1f680; 本…...

springboot 实现本地文件存储

springboot 实现本地文件存储 实现过程 上传文件保存文件&#xff08;本地磁盘&#xff09;返回文件HTTP访问服务器路径给前端&#xff0c;进行效果展示 存储 服务端接收上传的目的是提供文件的访问服务&#xff0c;对于SpringBoot而言&#xff0c;其对静态资源访问提供了很…...

Python进阶学习:Pandas--查看DataFrame中每一列的数据类型

Python进阶学习&#xff1a;Pandas–查看DataFrame中每一列的数据类型 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…...

Groovy - 大数据共享搜索配置

数据共享搜索列中配置了搜索列&#xff0c;相应的数据共享接口中也需要支持根据配置的字段搜索&#xff0c;配置实体时&#xff0c;支持搜索的入参code必须是searchKeys&#xff0c;且接口应该是需要支持分页&#xff08;入参必须是 current、pageSize&#xff09;的。current …...

第三节:Vben Admin登录对接后端login接口

系列文章目录 第一节:Vben Admin介绍和初次运行 第二节:Vben Admin 登录逻辑梳理和对接后端准备 第三节:Vben Admin登录对接后端login接口 第四节:Vben Admin登录对接后端getUserInfo接口 第五节:Vben Admin权限-前端控制方式 文章目录 系列文章目录前言一、Flask项目介绍…...

关于CSS 优先级布局应用的教程

在前端开发中&#xff0c;CSS 的优先级布局是非常重要的一部分。通过合理地应用 CSS 优先级&#xff0c;我们可以更加灵活地控制页面的布局和样式。本教程将向您介绍如何利用 CSS 优先级进行布局&#xff0c;并通过实例展示其应用。 1. 了解 CSS 优先级 在 CSS 样式表中&…...

vue2+elementui上传照片(el-upload 超简单)

文章目录 element上传附件&#xff08;el-upload 超详细&#xff09;代码展示html代码data中methods中接口写法 总结 element上传附件&#xff08;el-upload 超详细&#xff09; 这个功能其实比较常见的功能&#xff0c;后台管理系统基本上都有&#xff0c;这就离不开element的…...

目标检测新SOTA:YOLOv9问世,新架构让传统卷积重焕生机(附代码)

在目标检测领域,YOLOv9 实现了一代更比一代强,利用新架构和方法让传统卷积在参数利用率方面胜过了深度卷积。 继 2023 年 1 月 YOLOv8 正式发布一年多以后,YOLOv9 终于来了! 我们知道,YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Al…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...