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位)
相关推荐
_冷眸_8 分钟前
Python 调用大模型 API:最小请求、Base URL 和 401/404 排查
开发语言·人工智能·python
niucloud-admin19 分钟前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
熊猫钓鱼>_>1 小时前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
Ai-_Man1 小时前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
raindayinrain1 小时前
c++设计模式
开发语言·c++·设计模式
hiahiahia1231 小时前
Streaming Model Output
开发语言·前端
熊猫钓鱼>_>2 小时前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹
octopus_c2 小时前
C++ 运算符重载详解 && 日期类的实现
开发语言·c++
Eiceblue2 小时前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
j7~2 小时前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象