Qt正则表达式运用---QRegExp

文章目录

1.匹配数字

1.1个位数

cpp 复制代码
    QString str= "0 1 2 23  10 20 ¥24 #0 @44 111 22- 123 58 99   ";
    QRegExp rx("\\b\\d{1}\\b");
    int index=0;
    while(rx.indexIn(str,index) != -1)
    {

        index = str.indexOf(rx.cap(),index) + rx.matchedLength();
        qDebug()<<rx.cap()<<"index="<<index<<"len"<<rx.matchedLength();

    }

执行结果

cpp 复制代码
"0" index= 1 len 1
"1" index= 3 len 1
"2" index= 5 len 1
"0" index= 12 len 1
"0" index= 15 len 1
"0" index= 22 len 1

这个方法有个弊端就是 10 20 这种两位数里面的0 也会被匹配出来,这个我也不知道是为什么?特殊情况特殊处理就行了。

但是如果是写成 QRegExp rx("^\\d{1}$");形式就可以精准匹配"0"."1","2","3"..."9"的字符串了,不会匹配"10"里面的0了。

1.2两位数 及多位数

cpp 复制代码
	str="0 1 2 23 01 10 20 ¥24 #0 @44 111 22- 123 58 99   "
    QRegExp rx("\\b\\d{2}\\b");

这个可以匹配两位数字

输出如下:

cpp 复制代码
"23" index= 8 len 2
"01" index= 11 len 2
"10" index= 14 len 2
"20" index= 17 len 2
"24" index= 21 len 2
"44" index= 28 len 2
"11" index= 31 len 2
"22" index= 35 len 2
"12" index= 39 len 2
"58" index= 43 len 2
"99" index= 46 len 2

如果想匹配出两位数10 -99 的数 可以这样写 QRegExp rx("\\b[1-9][0-9]\\b");

如果想匹配 1-99的数 可以写成QRegExp rx("\\b[1-9][0-9]?\\b");这个表示第一个数字是1到九之间的,第二个数字是零到九之间的,问号表示第二个数字可以有也可以没有。

如果想匹配出 10-999的数 :可以写成QRegExp rx("\\b[1-9]\\d\\d?\\b");这里的\d表示的就是0-9中的一个数

匹配多位数 QRegExp rx("\\b[1-9]\\d{n}\\b");n=1:匹配两位数,n=2:匹配三位数,n=3:匹配四位数。

1.3 匹配非数字

cpp 复制代码
QString str= "0 1 2 23  10 20 ¥24 #0 @44 111 22- 123 58 99   ";
QRegExp rx1("[^0-9]");
QRegExp rx2("[^0-9|\\s]");

rx1就可以匹配出非数字的符号,\^0-9:表示不匹配0-9的数字。rx2可以匹配出除了数字和空格以外的字符。

匹配单词

cpp 复制代码
QString str = "Hello world! This is a sample text.";
QRegExp rx("\\b\\w+\\b");
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
    qDebug() << rx.cap(0);
    pos += rx.matchedLength();
}

输出

cpp 复制代码
"Hello"
"world"
"This"
"is"
"a"
"sample"
"text"

用法都差不多,主要是具体情况具体处理,后续再完善...

相关推荐
没钥匙的锁14 小时前
16-Java反射机制:Spring IOC背后的核心技术
java·开发语言·spring
起予者汝也4 小时前
Python 数据结构
开发语言·数据结构·python
摸鱼号20234 小时前
在 Rocky Linux 10.1 Minimal 上安装 MySQL 9.7 的血泪史:MariaDB 到底有多“根深蒂固”?
mysql
ECT-OS-JiuHuaShan5 小时前
严格证明:还原论是ASCII,整体论是UTF-8的历史意义和价值
开发语言·人工智能·算法·量子计算
AC赳赳老秦6 小时前
时间开销自动统计:OpenClaw 记录工作任务时长、分析时间分配、给出优化建议
java·大数据·开发语言·python·自动化·deepseek·openclaw
祉猷并茂,雯华若锦6 小时前
Appium 3.x 实战:元素定位与常见错误解析
开发语言·python·appium
Lethehong6 小时前
飞算Java:从需求梳理到风险闭环,搭建云盾企业信息安全与权限管理平台
java·开发语言
爱喝水的鱼丶6 小时前
SAP-ABAP:ALV数据导出增强——实现Excel/PDF/CSV多格式自定义导出
开发语言·性能优化·sap·abap·erp
万亿少女的梦1686 小时前
基于Spring Boot、Vue与MySQL的高校实习信息管理系统设计与实现
spring boot·mysql·vue·权限管理·restful api
Mortalbreeze7 小时前
深入理解 Linux 线程机制(四):线程同步——条件变量与信号量
linux·运维·服务器·开发语言·c++