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位)
相关推荐
曹牧24 分钟前
Java String[] 数组的 contains
java·开发语言·windows
yong999027 分钟前
LSD直线提取算法 MATLAB
开发语言·算法·matlab
一只专注api接口开发的技术猿30 分钟前
构建电商数据中台:基于淘宝 API 关键词搜索接口的设计与实现
大数据·开发语言·数据库
浩瀚地学38 分钟前
【Java】String
java·开发语言·经验分享·笔记·学习
松涛和鸣1 小时前
25、数据结构:树与二叉树的概念、特性及递归实现
linux·开发语言·网络·数据结构·算法
莫物1 小时前
Java后端请求不同环境下的同一接口,有的环境会出现乱码问题
java·开发语言
MM_MS1 小时前
SQL Server数据库和Visual Studio (C#)联合编程
开发语言·数据库·sqlserver·c#·visual studio
惺忪97981 小时前
Qt C++11/14/17 新特性大全详解
开发语言·c++
Pacify_The_North1 小时前
【C++11(二)】可变参数模板和 lambda表达式
java·开发语言·c++
顺顺 尼1 小时前
包装器c++11
开发语言·c++