学习QT之算法和正则表达式

学习QT之算法和正则表达式

一、QT5 常用算法

函数 功能
qAbs(value) 返回value的绝对值
qMax(value1,value2) 返会value1和value2中较大的值
qRound(value) 返回与一个浮点数最接近的整数值,即四舍五入返回一个整数值
qSwap(value1,value2) 交换value1和value2的值

二、基本的正则表达式

使用正则表达式可以方便地完成处理字符串的一些操作,如验证、查找、替换和分割等。Qt的QRegExp类是正则表达式的表示类,它基于Perl的正则表达式语言,完全支持Unicode.

正则表达式由表达式量词断言组成。

(1)、最简单的表达式是一个字符。字符集可以使用表达式如"[AEIOU]",表示匹配所有的大学元音字母;使用"[ ^ AEIOU]",表示匹配所有的非元音字母,即辅音字母;连续的字符集可以使用表达式如"[a-z]",表示匹配所有的小写英文字母。

(2)、量词说明表达式出现的次数,如"x[1,2]",表示“x”可以至少有一个,至多有两个。

在计算机语言中,标识符通常要求一字母或下划线开头,后面可以说字母、数字和下划线。满足条件的标识符表示为:[A-Za-z]+[A-Za-z_0-9]*

其中,表达式中的"+“表示”[A-Za-z]“至少出现一次,可以出现多次;”*"表示[A-Za-z_0-9]可以出现零次或多次。

正则表达式的表达式如下

表达式 说明
[] 包含一系列字符
[^] 包含之外一系列字符
\r,\n 代表回车和换行符
\t 制表符
\ \ 表达" \ "本身
^ 匹配^符号本身
\ $ 匹配$符号本身

例如:[A-Za-z_0-9]匹配字母数字和下划线;[ ^a-z]匹配除小写字母外的所有所有字符

正则表达式的量词如下

量词 含义 量词 含义
E? 匹配0次或1次 E{n,} 至少匹配n次
E+ 匹配1次或多次 E{,m} 最多匹配m次
E* 匹配0次或多次 E{n,m} 至少匹配n次,最多匹配m次
E{n} 匹配n次

例如:\b[A-Z]+[a-z_0-9]{,3}\b匹配大写字母开头一个或多个,然后最多3个小写字母或下划线或数字

正则表达式的断言如下

符号 含义 符号 含义
^ 表示在字符串开头进行匹配 \B 非单词边界
$ 表示在字符串结尾进行匹配 (?=E) 表示表达式后紧随E才匹配
\b 单词边界 (?!E) 表示表达式后不跟随E才匹配

例如:^ [abc] [0-9]$匹配以abc中任意一个开头,数字结尾的字符串

元字符如下

元字符 说明
. 匹配除了换行符意外的任意字符
\w 匹配字母、数字、下划线、汉字
\s 匹配任意的空白符
\b 单词的开始或结尾
\ ~ 匹配字符串的开始
$ 匹配字符串的结束

\ba\w*\b:匹配以字母a开头的单词(\ba),然后是任意数量的字母或数字(\w *),最后是单词结束处(\b)。

\b\w{6}\b:匹配刚好6个字符的单词。

三、在QT中使用正则表达式

#include<QRegExp>
#include<QRegExpValidator>

QRegExp regexp("[A-Za-z][0-9][1-9]{0,2}");
//匹配第一个为字母,第二个为数字,接下来的0-2个为非零数字
ui->lineEdit->setValidator(new QRegExpValidator(regexp,this));

ui->okButton->setEnable(ui->lineEdit->hasAcceptableInput());

发布了48 篇原创文章 · 获赞 5 · 访问量 2597

猜你喜欢

转载自blog.csdn.net/Mr_robot_strange/article/details/104589413