QT-正则表达式QRegExp
sf2gis@163.com
2015年1月10日
1 目的:字符串模式匹配及操作。
2 原理:通过模式字符串,查找相应的字符串索引。与QString配合,验证、查找、修改、替换、截取等操作字符串。
3 方法:QRegExp
QRegExp是以Perl的正则表达式为基础发展来的。可以使用简单的通配符匹配,或者纯字符匹配,也可以使用正则表达式匹配。使用setPatternSyntax()可以切换不同的匹配模式。
使用exactMatch()验证字符串是否符合指定格式。
匹配模式:RegExp,RegExp2,Wildcard,WildcardUnix,FixedString,W3CXmlSchema11。
3.1 正则表达式匹配:QRegExp::setPatternSyntax(QRegExp::RegExp)
默认模式。类似Perl格式的正则表达式。
RegExp2模式与RegExp类似,但是使用最小分组匹配来获取匹配字符串。
3.1.1模式字符串格式
注意:在具有\的格式时,需要使用\\来转义。
3.1.1.1 基本字符模式
1) 简单单个字符:纯字符。
2) 字符集中单个字符:【】表示指定字符集中单个字符(格式:字符集合,或-表示范围,或^表示排除)。可以使用快捷匹配字符(参见:快捷字符:使用一个自定义的转义字符来代替常用的模式字符串。)。如果需要使用utf8(如汉字)可以使用\u编码(参见只包含汉字的字符串。)的方式,utf8的编码可以网络查找,如http://utf8.supfree.net/ 。
示例:
a[^3]2.txt表示a2中间任意不同于3的一个字符(无字符为false),
[0-9-]表示0到9或负号-。
3) 数量字符:至少n个:E{n,},至多n个:E{,m},存在n个至m个:E{n,m}。确定数量字符E{}。默认返回最多匹配字符,使用setMinimal()则返回最少匹配字符串。
4) 开始字符:^
5) 结束字符:$
3.1.1.2 逻辑控制字符(断言字符)
1) or:|表示或者。
2) 分组、捕获:(E)表示括号内的模式为一个基本模式,可以捕获。
3) 分组、不捕获:(?:E)表示括号内的模式为一个基本模式,不可捕获。
4) 分组中捕获值:(\m)。m是捕获的第m个分组值。
5) 肯定匹配:E(?=RegExp)查找E,其指定位置是RegExp。
6) 否定匹配:E(?!RegExp)=查找E,其指定位置不是RegExp。
3.1.1.3 快捷匹配字符:使用一个自定义的转义字符来代替常用的模式字符串。
1) 数字、非数字:\d=【0-9】,\D=[^0-9]。
2) 字母或数字或下划线、非字母或数字或下划线或:\w=【A-Za-z0-9_】,\W=【^A-Za-z0-9_】。
3) 空白字符、非空白字符:\s=【 \t\r\n】,\S=【^ \t\r\n】。
4) 任意字符(包括换行):