【QString】QRegExp介绍记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

      • 一、QRegExp 是什么?
      • 二、QRegExp 核心概念(新手必懂)
      • 三、QRegExp 常用方法(结合你的场景)
        • 1. 拆分字符串(split)
        • 2. 匹配字符串(exactMatch)
        • 3. 查找子串(indexIn)
        • 4. 替换字符串(replace)
      • 四、QRegExp 注意事项(新手避坑)
      • 总结

你现在想深入了解QRegExp,这是Qt框架中用于正则表达式处理的核心类,专门用来匹配、查找、替换字符串中的复杂模式,正好能解决你之前遇到的“Tab/空格混合拆分”这类问题。我会从新手视角由浅入深讲解,结合实用例子帮你理解。

一、QRegExp 是什么?

QRegExp是Qt对正则表达式的封装类,作用是:

  • 匹配字符串是否符合特定规则(比如验证手机号、邮箱);
  • 查找字符串中符合规则的子串;
  • 替换字符串中符合规则的内容;
  • 拆分字符串(比如你之前用它拆分Tab/空格分隔的文本)。

简单类比:普通的字符串查找(如contains("abc"))是“精确匹配”,而QRegExp是“模糊匹配/规则匹配”,能处理“任意多个空格”“数字+字母组合”这类灵活的场景。

二、QRegExp 核心概念(新手必懂)

先记住几个基础规则,结合例子理解:

符号含义例子匹配结果
.匹配任意单个字符a.c匹配 abc、a1c、a#c 等
*匹配前面字符0次或多次ab*c匹配 ac、abc、abbc 等
+匹配前面字符1次或多次ab+c匹配 abc、abbc 等(不匹配ac)
[]匹配括号内任意一个字符[0-9]匹配0-9任意数字
[ \\t]匹配空格或Tab[ \\t]+匹配1个或多个空格/Tab
\\d等价于[0-9](数字)\\d+匹配1个或多个数字
\\s匹配任意空白符(空格/Tab/换行)\\s+匹配任意连续空白

三、QRegExp 常用方法(结合你的场景)

以你之前的“拆分Tab/空格分隔的字符串”为例,讲解核心用法:

1. 拆分字符串(split)

这是你最常用的场景,QString::split(QRegExp)支持按正则规则拆分:

#include<QRegExp>#include<QString>#include<QStringList>#include<QDebug>intmain(){// 测试字符串:混合空格和TabQString str="姓名 年龄\t\t性别 职业";// 规则1:匹配1个或多个空格/Tab([ \\t]+)QRegExpreg1("[ \\t]+");QStringList result1=str.split(reg1,Qt::SkipEmptyParts);qDebug()<<"拆分结果1:"<<result1;// ["姓名", "年龄", "性别", "职业"]// 规则2:等价写法(\\s+ 匹配任意空白符)QRegExpreg2("\\s+");QStringList result2=str.split(reg2,Qt::SkipEmptyParts);qDebug()<<"拆分结果2:"<<result2;// 和上面结果一致return0;}
2. 匹配字符串(exactMatch)

验证字符串是否完全符合规则(比如验证手机号):

// 规则:11位数字(以1开头)QRegExpreg("^1\\d{10}$");// ^ 表示字符串开头,$ 表示结尾,\\d{10} 表示正好10个数字qDebug()<<reg.exactMatch("13800138000");// true(符合)qDebug()<<reg.exactMatch("1380013800");// false(只有10位)qDebug()<<reg.exactMatch("23800138000");// false(不是以1开头)
3. 查找子串(indexIn)

查找字符串中符合规则的子串位置:

QString str="我的手机号:13800138000,备用号:13900139000";QRegExpreg("1\\d{10}");// 匹配11位手机号// 查找第一个匹配项intpos=reg.indexIn(str);while(pos!=-1){// 没找到返回-1qDebug()<<"找到手机号:"<<reg.cap(0);// cap(0)获取匹配到的完整字符串pos=reg.indexIn(str,pos+reg.matchedLength());// 查找下一个}// 输出:// 找到手机号:"13800138000"// 找到手机号:"13900139000"
4. 替换字符串(replace)

替换符合规则的子串:

QString str="姓名 年龄\t\t性别 职业";QRegExpreg("\\s+");// 匹配任意连续空白// 把所有连续空白替换成单个TabQString newStr=str.replace(reg,"\t");qDebug()<<newStr;// "姓名\t年龄\t性别\t职业"

四、QRegExp 注意事项(新手避坑)

  1. 转义字符:在C++字符串中,\需要写成\\(比如正则中的\d要写成\\d),因为C++会把单个\当作转义符;
  2. Qt版本兼容:Qt5之后推荐用QRegularExpression(功能更全、性能更好),但QRegExp仍可使用,两者语法基本一致;
  3. Qt::SkipEmptyParts:拆分时一定要加这个参数,避免连续分隔符产生空字符串(比如"\t\t"拆分后不会出现空项)。

总结

  1. QRegExp是Qt处理正则表达式的工具,核心用于匹配、查找、替换、拆分字符串;
  2. 核心规则:+表示1次或多次,[ \\t]匹配空格/Tab,\\s匹配任意空白符;
  3. 对你的场景:用QRegExp("[ \\t]+")QRegExp("\\s+")拆分Tab/空格混合的字符串,是最简洁通用的方案。

如果需要针对某个具体场景(比如验证邮箱、提取数字)写QRegExp代码,可以告诉我,我再针对性举例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1148908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何高效调用Qwen3-VL?这个WEBUI镜像让你事半功倍

如何高效调用Qwen3-VL&#xff1f;这个WEBUI镜像让你事半功倍 在多模态AI迅速演进的今天&#xff0c;开发者面临的最大挑战已不再是“有没有模型可用”&#xff0c;而是“能否快速、低成本地将模型集成到实际业务中”。尽管许多视觉-语言大模型&#xff08;VLM&#xff09;在技…

没GPU怎么发AI论文?ResNet18云端实验省下设备经费

没GPU怎么发AI论文&#xff1f;ResNet18云端实验省下设备经费 作为一名研究生&#xff0c;写论文时经常需要补充实验数据来支撑论点。但实验室GPU资源紧张&#xff0c;导师经费有限&#xff0c;买不起高端显卡怎么办&#xff1f;别担心&#xff0c;今天我就来分享一个经济实惠…

Qwen2.5-7B镜像部署全指南|支持128K上下文与多语言推理

Qwen2.5-7B镜像部署全指南&#xff5c;支持128K上下文与多语言推理 本文将为你提供一份从零开始的 Qwen2.5-7B 大模型本地化部署完整实践指南&#xff0c;涵盖模型下载、显存评估、主流推理框架&#xff08;vLLM/TGI/Ollama&#xff09;部署、量化优化、函数调用、RAG 应用构建…

AI 3D感知开发:MiDaS模型批量处理图像教程

AI 3D感知开发&#xff1a;MiDaS模型批量处理图像教程 1. 引言&#xff1a;AI 单目深度估计的现实意义 在计算机视觉领域&#xff0c;从单张2D图像中恢复3D空间结构一直是极具挑战性的任务。传统方法依赖多视角几何或激光雷达等硬件设备&#xff0c;成本高且部署复杂。近年来…

2025年度章鱼大会圆满落幕 以徽章为媒弘扬奥林匹克文化

1月11日&#xff0c;以“共治共享 逐光同行”为主题的2025年度章鱼大会在北京亮马河大厦举办。本次大会采用线上同步直播形式&#xff0c;线上线下实时互动&#xff0c;气氛热烈。来自各地的徽章收藏爱好者、奥林匹克收藏界专家顾问齐聚现场&#xff0c;共话徽章文化传承与奥林…

智能万能抠图Rembg:提升内容创作效率的利器

智能万能抠图Rembg&#xff1a;提升内容创作效率的利器 1. 引言&#xff1a;智能万能抠图 - Rembg 在数字内容创作日益普及的今天&#xff0c;图像处理已成为设计师、电商运营、短视频创作者等群体的核心工作环节。其中&#xff0c;图像去背景&#xff08;抠图&#xff09;作…

ResNet18模型安全测试:云端隔离环境更放心

ResNet18模型安全测试&#xff1a;云端隔离环境更放心 1. 为什么金融客户需要云端隔离环境 金融行业对数据安全和模型可靠性有着极高的要求。当需要对AI模型进行渗透测试时&#xff0c;传统的本地测试环境存在两大痛点&#xff1a; 安全风险&#xff1a;测试过程中可能意外泄…

【SG滤波】三阶滤波、五阶滤波、七阶滤波附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

100 条网络安全高频考点,都是必背内容!你都吃透了吗?

1988年&#xff0c;一款名为“莫里斯蠕虫”的程序悄然传播&#xff0c;它最初是康奈尔大学研究员的实验项目&#xff0c;目的是测量互联网规模。可谁也没想到&#xff0c;这个程序失控后感染了数千台电脑&#xff0c;成为史上首个大规模网络攻击事件。从那时起&#xff0c;网络…

ResNet18跨框架对比:PyTorch/TF,云端3小时全搞定

ResNet18跨框架对比&#xff1a;PyTorch/TF&#xff0c;云端3小时全搞定 引言 在深度学习领域&#xff0c;ResNet18作为经典的轻量级卷积神经网络&#xff0c;广泛应用于图像分类、目标检测等任务。但很多开发者在技术选型时常常面临一个难题&#xff1a;PyTorch和TensorFlow…

基于Qwen2.5-7B的离线对话实现|附完整代码示例

基于Qwen2.5-7B的离线对话实现&#xff5c;附完整代码示例 一、引言&#xff1a;为何选择Qwen2.5-7B进行离线对话&#xff1f; 在当前大模型应用快速落地的背景下&#xff0c;离线推理正成为企业级AI服务的重要部署方式。相比在线API调用&#xff0c;离线部署不仅能显著降低长…

体验ResNet18省钱攻略:云端GPU按需付费比买显卡省90%

体验ResNet18省钱攻略&#xff1a;云端GPU按需付费比买显卡省90% 1. 为什么选择云端GPU跑ResNet18&#xff1f; 作为一名自由开发者&#xff0c;接了个物品识别的外包项目&#xff0c;客户预算有限&#xff0c;算了下买RTX3060显卡要3000多&#xff0c;但项目只用两周&#x…

精准入职背景调查,为企业筑牢人才基石

在当今竞争激烈的商业环境中&#xff0c;一次失败的招聘可能给企业带来巨大损失。如何确保每一位新员工都如其简历所言&#xff0c;真正具备岗位所需的专业能力和职业素养&#xff1f;入职背景调查已成为现代企业人才管理中不可或缺的关键环节。江湖背调&#xff0c;专为企业高…

ResNet18模型融合技巧:集成学习+云端GPU高效实验

ResNet18模型融合技巧&#xff1a;集成学习云端GPU高效实验 引言 在机器学习竞赛中&#xff0c;模型融合是提升成绩的关键技术之一。想象一下&#xff0c;就像参加一场歌唱比赛&#xff0c;单个评委可能有主观偏好&#xff0c;但如果把多位评委的评分综合起来&#xff0c;结果…

模型部署实战:Rembg抠图服务搭建指南

模型部署实战&#xff1a;Rembg抠图服务搭建指南 1. 引言 1.1 智能万能抠图 - Rembg 在图像处理与内容创作领域&#xff0c;精准、高效的背景去除技术一直是核心需求之一。无论是电商商品图精修、社交媒体素材制作&#xff0c;还是AI生成内容&#xff08;AIGC&#xff09;中…

零基础入门Rembg:图像去背景快速上手教程

零基础入门Rembg&#xff1a;图像去背景快速上手教程 1. 引言&#xff1a;为什么你需要一个智能抠图工具&#xff1f; 在数字内容创作、电商运营、UI设计等场景中&#xff0c;图像去背景&#xff08;即“抠图”&#xff09;是一项高频且关键的任务。传统手动抠图依赖Photosho…

【值得收藏】AI智能体(AI Agent)实战指南:从底层原理到安全运行

AI智能体(AI Agent)是能代表用户独立完成任务的系统&#xff0c;与传统LLM应用不同&#xff0c;它能动态决策、调用工具并管理状态。文章详细介绍了智能体的定义、特征、构建时机、设计基础、核心组件、编排模式和护栏体系&#xff0c;并通过LangGraph框架提供了最小可运行的智…

Rembg WebUI快捷键:提升操作效率的技巧

Rembg WebUI快捷键&#xff1a;提升操作效率的技巧 1. 智能万能抠图 - Rembg 在图像处理领域&#xff0c;精准、高效地去除背景是许多应用场景的核心需求——无论是电商产品上架、设计素材制作&#xff0c;还是AI内容生成前的预处理。传统手动抠图耗时耗力&#xff0c;而基于…

Qwen2.5-7B大模型技术揭秘|编程、数学与多语言能力全面提升

Qwen2.5-7B大模型技术揭秘&#xff5c;编程、数学与多语言能力全面提升 一、引言&#xff1a;Qwen2.5-7B的技术演进背景 随着大语言模型在自然语言理解、代码生成和多模态任务中的广泛应用&#xff0c;阿里云推出的 Qwen2.5 系列再次将开源模型的能力推向新高度。其中&#xff…

Qwen2.5-7B + vLLM:构建高性能大模型服务的正确姿势

Qwen2.5-7B vLLM&#xff1a;构建高性能大模型服务的正确姿势 一、引言&#xff1a;为何需要高效的大模型推理架构&#xff1f; 随着大语言模型&#xff08;LLM&#xff09;在自然语言理解、代码生成、数学推理等任务中的广泛应用&#xff0c;如何将这些参数量动辄数十亿的模型…