qt 正则表达式

发布于:2025-07-18 ⋅ 阅读:(21) ⋅ 点赞:(0)

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位)

 


网站公告

今日签到

点亮在社区的每一天
去签到