qt 正则表达式

qt有QRegExp类和QRegularExpression类,目前QRegExp类已弃用。正则表达式是一种特殊的字符串模式,用来描述匹配一组字符的规则。

下面是一些基本的正则表达式元字符:

  • . 匹配除换行符外的任何一个字符;
  • ^ 匹配字符串的开头;
  • $ 匹配字符串的结尾;
  • [] 匹配括号中任意一个字符;
  • [^] 不匹配括号中任意一个字符;
  • * 匹配前面的字符零次或多次;
  • + 匹配前面的字符一次或多次;
  • {m,n} 匹配前面的字符至少 m 次,最多 n 次;
  • ? 匹配前面的字符零次或一次;
  • () 捕获匹配的子字符串;
  • \d 匹配任意一个数字字符;
  • \D 匹配任意一个非数字字符;
  • \w 匹配任意一个单词字符;
  • \W 匹配任意一个非单词字符;
  • \s 匹配任意一个空格字符;
  • \S 匹配任意一个非空格字符;
  • \b 匹配单词的边界。

|----------|------------|
| 表达式 | 说明 |
| \r, \n | 代表回车和换行符 |
| \t | 制表符 |
| \\ | 代表 "\" 本身 |
| \^ | 匹配 ^ 符号本身 |
| \ | 匹配 符号本身 |

例子:

复制代码
QRegularExpression re("\\d{3}([a-z]+|[A-Z]+)");
这个正则表达式可以分解为以下几个部分:

\\d{3}:

\\d 匹配任意数字 (等价于 [0-9])

{3} 表示前面的元素(\d)必须出现恰好3次

这部分匹配"123", "456"等三位数字

([a-z]+|[A-Z]+):

这是一个分组,包含一个"或"条件(|)

[a-z]+ 匹配一个或多个小写字母

[A-Z]+ 匹配一个或多个大写字母

注意这里不是混合大小写,要么全是小写,要么全是大写

整体匹配示例:

"123abc" (匹配)

"456XYZ" (匹配)

"789AbC" (不匹配,因为混合了大小写)

"12ab" (不匹配,因为只有2位数字)

QRegularExpression re("^(\\d{2})/(\\d{2})/(\\d{4})$");

这个正则表达式用于匹配日期格式,分解如下:

^ 表示字符串的开始

(\\d{2}):

第一个捕获组

匹配2位数字 (如月份)

/ 匹配字面的斜杠字符

(\\d{2}):

第二个捕获组

匹配2位数字 (如日期)

/ 匹配字面的斜杠字符

(\\d{4}):

第三个捕获组

匹配4位数字 (如年份)

$ 表示字符串的结束

整体匹配示例:

"12/31/2020" (匹配,3个组分别捕获"12", "31", "2020")

"01/01/2000" (匹配)

"123/45/6789" (不匹配,因为第一部分有3位数字)

"12-31-2020" (不匹配,因为分隔符不是斜杠)

这个正则表达式常用于匹配"MM/DD/YYYY"格式的日期,但需要注意:

它不会验证日期的有效性(如"99/99/9999"也会匹配)

它强制要求斜杠作为分隔符

每个数字部分的长度严格限制(2位/2位/4位)
相关推荐
郝学胜-神的一滴1 小时前
策略模式:模拟八路军的抗日策略
开发语言·c++·程序人生·设计模式·策略模式
大翻哥哥2 小时前
Python轻量化革命:用MicroPython构建边缘智能设备
开发语言·python
君科程序定做3 小时前
使用 Python 自动化检查矢量面数据的拓扑错误(含导出/删除选项)
开发语言·python·自动化
长沙红胖子Qt3 小时前
VTK开发笔记(三):熟悉VTK开发流程,编写球体,多半透明球体Demo
c++·qt
都是些老物件3 小时前
如何用熵正则化控制注意力分数的分布
开发语言·python
Ka1Yan3 小时前
[算法] 双指针:本质是“分治思维“——从基础原理到实战的深度解析
java·开发语言·数据结构·算法·面试
Bling_Bling_14 小时前
Vue2 与 Vue3 路由钩子的区别及用法详解
开发语言·前端·vue
Mr_Xuhhh4 小时前
Qt中UDP回显服务器和客户端
服务器·qt·udp
Quz4 小时前
QML Chart组件之图例
qt
smilejingwei4 小时前
数据分析编程第六步:大数据运算
java·大数据·开发语言·数据分析·编程·esprocspl