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