2026/4/4 21:28:55
网站建设
项目流程
做网站就要租服务器,赤峰企业网站建设,佛山市网络seo推广公司,找地推平台提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 一、QRegExp 是什么#xff1f;二、QRegExp 核心概念#xff08;新手必懂#xff09;三、QRegExp 常用方法#xff08;结合你的场景#xff09;1. 拆分字符串文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录一、QRegExp 是什么二、QRegExp 核心概念新手必懂三、QRegExp 常用方法结合你的场景1. 拆分字符串split2. 匹配字符串exactMatch3. 查找子串indexIn4. 替换字符串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次或多次abc匹配 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)支持按正则规则拆分#includeQRegExp#includeQString#includeQStringList#includeQDebugintmain(){// 测试字符串混合空格和TabQString str姓名 年龄\t\t性别 职业;// 规则1匹配1个或多个空格/Tab[ \\t]QRegExpreg1([ \\t]);QStringList result1str.split(reg1,Qt::SkipEmptyParts);qDebug()拆分结果1result1;// [姓名, 年龄, 性别, 职业]// 规则2等价写法\\s 匹配任意空白符QRegExpreg2(\\s);QStringList result2str.split(reg2,Qt::SkipEmptyParts);qDebug()拆分结果2result2;// 和上面结果一致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位手机号// 查找第一个匹配项intposreg.indexIn(str);while(pos!-1){// 没找到返回-1qDebug()找到手机号reg.cap(0);// cap(0)获取匹配到的完整字符串posreg.indexIn(str,posreg.matchedLength());// 查找下一个}// 输出// 找到手机号13800138000// 找到手机号139001390004. 替换字符串replace替换符合规则的子串QString str姓名 年龄\t\t性别 职业;QRegExpreg(\\s);// 匹配任意连续空白// 把所有连续空白替换成单个TabQString newStrstr.replace(reg,\t);qDebug()newStr;// 姓名\t年龄\t性别\t职业四、QRegExp 注意事项新手避坑转义字符在C字符串中\需要写成\\比如正则中的\d要写成\\d因为C会把单个\当作转义符Qt版本兼容Qt5之后推荐用QRegularExpression功能更全、性能更好但QRegExp仍可使用两者语法基本一致Qt::SkipEmptyParts拆分时一定要加这个参数避免连续分隔符产生空字符串比如\t\t拆分后不会出现空项。总结QRegExp是Qt处理正则表达式的工具核心用于匹配、查找、替换、拆分字符串核心规则表示1次或多次[ \\t]匹配空格/Tab\\s匹配任意空白符对你的场景用QRegExp([ \\t])或QRegExp(\\s)拆分Tab/空格混合的字符串是最简洁通用的方案。如果需要针对某个具体场景比如验证邮箱、提取数字写QRegExp代码可以告诉我我再针对性举例。