Qt开发杂记(二)

QRegExp类用正则表达式或通配符进行模式匹配.

c 匹配字符 'c'
. 匹配任意字符
^ 匹配一个输入的开始
$ 匹配一个输入的结束
[] 匹配一个字符串集的定义 - see below.
a* matches a sequence of zero or more a's (可以是a,ab,ade等;*可以代表任意个字符,包括0个)
a+ matches a sequence of one or more a's  (可以是ab,ade,aeee等,但不能是a;+只代表一个以上的字符)
a? matches an optional a     匹配可选的a  (可以是ab,ac,ad等,但不能是a,或ade;?只代表一个字符)
/c 避免与一些特殊的字符串匹配,如 /, [, *, +, . 等,这个时候要使用这些字符串的时候,我们可以在前面加上一个/,比如//表示一个/字符,而不是一个通匹符, /[表字符[,/*表示字符*,/+表示字符+等等
/t 匹配TAB字符 (9)
/n 匹配一个新行 (10)
/r 匹配一个回车 (13)
/s 匹配一个空格 (通过定义成QChar::isSpace()返回真值时的任意字符,包括至少这些ASCLL字符s 9 (TAB), 10 (LF), 11 (VT), 12(FF), 13 (CR) and 32 (Space)).
/d 匹配一个阿拉伯数字 (定义成QChar::isDigit()可以返回真值时的任意字符,包括至少是ASCLL字符0'-'9').
/x1f6b 匹配一个用unicode指向u1f6b的字符(hexadecimal 1f6b).
/x0012 匹配一个ASCII/Latin1字符编码为0x12的字符 (18 decimal, 12 hexadecimal).
/022   匹配一个ASCII/Latin1字符编码为022的字符 (18 decimal, 22 octal).
在通配符模式下, 它仅仅表示四种形式:

c 匹配字符'c'
? 表示任意字符
* 表示任意字符串
[] 表示一个字符集定义 - see below.
QRegExp 支持同时在模式字符串(pattern strings)和字符串(strings)中的Unicode的匹配.

在用C++代码书写正则表达式的时候, 记住用/来操作字符. 所以为了匹配"."这个字符, 你必须在C++代码里头定样书写"//.", 而不是"/.".

一个字符集匹配多个字符的集合的定义. 例如, [BSD] 匹配'B', 'D' 和 'S'的任何一种.在一个字符集里, 那些专用字符 '.', '*', '?', '^', '$', '+' 和'[' 失去它们的特殊含义. 下面是一些比较特殊的字符的使用:

^ (取反操作符)当放到list最前面的时候, 表示匹配不含有list里的任意一个字符.如果在字符集里包括"^"自 己的话,则必须用/来标识这是一个特殊字符,或者将它放到不在第一个位置的任何一个位置.
- 一个字符集的范围定义. 如果在字符集里包括"-"自己的话,则必须用/来标识这是一个特殊字符,或者将它放 到最后一个位置.
] 字符集的结束标志. 如果字符集里包含']'的话, 那么必须用/来标识这是一个特殊字符,或者将它放到第一个位置(但是如果有取反操作符'^'的话, 就必须放在取反操作符的后面)
因此, [a-zA-Z0-9.] 表示ASCLL码里的大小写字母,数字及点; [^/s] 表示除了空格的任何东西(字符).
/注意 在Qt 3.0, 正则表达式语言五个更多的特殊字符, 即'(', ')', '{', '|' and '}'. 拥有很好的接口, 只需用一个/来标识这些正则表达式.

缺陷及使用限制:

不区分大小写不被non-ASCII/Latin1 (non-8bit) 字符集支持. 任意的非零字符(non-zero QChar.row())即使是QRegExp的不区分大小写模式下也会区分大小写的.

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页