news 2026/4/23 15:30:11

【QString】QRegExp介绍记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【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代码,可以告诉我,我再针对性举例。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:10:17

智能抠图Rembg:珠宝首饰去背景案例

智能抠图Rembg&#xff1a;珠宝首饰去背景案例 1. 引言&#xff1a;AI驱动的电商图像精修新范式 随着电商平台对商品展示质量要求的不断提升&#xff0c;高精度去背景技术已成为图像处理的核心需求之一。传统手动抠图耗时耗力&#xff0c;难以满足大批量商品图快速上线的需求…

作者头像 李华
网站建设 2026/4/18 9:16:35

Rembg抠图模型比较:U2NET与其他网络

Rembg抠图模型比较&#xff1a;U2NET与其他网络 1. 引言&#xff1a;智能万能抠图 - Rembg 在图像处理与内容创作领域&#xff0c;自动去背景&#xff08;Image Matting / Background Removal&#xff09;是一项高频且关键的需求。无论是电商商品图精修、社交媒体内容制作&am…

作者头像 李华
网站建设 2026/4/23 15:18:48

提升LLM实用性|利用Qwen2.5-7B和Qwen-Agent实现外部工具集成

提升LLM实用性&#xff5c;利用Qwen2.5-7B和Qwen-Agent实现外部工具集成 一、引言&#xff1a;从“能说”到“能做”的关键跃迁 大语言模型&#xff08;LLM&#xff09;在自然语言理解与生成方面已展现出惊人能力&#xff0c;但其“只说不做”的局限性严重制约了实际应用价值。…

作者头像 李华
网站建设 2026/4/16 13:06:10

深度解析Qwen2.5-7B部署流程|实现低延迟高并发的Web推理服务

深度解析Qwen2.5-7B部署流程&#xff5c;实现低延迟高并发的Web推理服务 一、引言&#xff1a;为何需要高性能推理架构&#xff1f; 随着大语言模型&#xff08;LLM&#xff09;在实际业务场景中的广泛应用&#xff0c;用户对响应速度和服务稳定性的要求日益提升。Qwen2.5-7B…

作者头像 李华
网站建设 2026/3/14 23:49:13

结构化输出更稳定|Qwen2.5-7B-Instruct + vLLM实战

结构化输出更稳定&#xff5c;Qwen2.5-7B-Instruct vLLM实战 在大模型落地加速的今天&#xff0c;企业级AI应用对推理服务提出了更高要求&#xff1a;不仅要响应快、吞吐高&#xff0c;还需支持长上下文理解与结构化数据生成。尤其是在自动化报告生成、API数据填充、智能客服…

作者头像 李华
网站建设 2026/4/23 5:32:47

SNH48杨冰怡”I KNOW YOU KNOW”个人巡演圆满收官, 千里奔赴见证梦想绽放

来自SNH48青春女团的年度青春盛典TOP1成员杨冰怡在夺冠后&#xff0c;开始了个人全国巡演以及个人首张唱片的宣传之旅。加入女团11年以来&#xff0c;杨冰怡一直用极致的舞台表现力及充满蓬勃生命力的少女偶像元气&#xff0c;征服了大量的粉丝。1月10日&#xff0c;她在广州圆…

作者头像 李华