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位)
相关推荐
ae_zr4 分钟前
QT动态编译应用后,如何快速获取依赖
开发语言·qt
gjxDaniel6 分钟前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
jiang_changsheng28 分钟前
环境管理工具全景图与深度对比
java·c语言·开发语言·c++·python·r语言
LYOBOYI12334 分钟前
qml的对象树机制
c++·qt
yong999037 分钟前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab
LeoZY_41 分钟前
开源项目精选:Dear ImGui —— 轻量高效的 C++ 即时模式 GUI 框架
开发语言·c++·ui·开源·开源软件
Fightting8842 分钟前
Tkinter Button bind hover message
开发语言·python
qq_336313931 小时前
javaweb-web基础(springboot入门)
java·开发语言·mysql
玄同7651 小时前
LangChain 1.0 模型接口:多厂商集成与统一调用
开发语言·人工智能·python·langchain·知识图谱·rag·智能体
特立独行的猫a1 小时前
C++轻量级Web框架介绍与对比:Crow与httplib
开发语言·前端·c++·crow·httplib