您的位置:首页 > 编程语言 > Qt开发

Qt:正则表达式语法:

2015-11-27 15:19 288 查看
正则表达式是验证输入、从输入中提取数据以及对输入进行搜索和替换的强大工具,所谓正则表达式,regexp是一种利用模式匹配语言来描述字符串组成限制条件的方式;
Qt 提供了一个QRegExp类,它实现了Perl风格的扩展正则表达式语言的大部分功能:
正则表达式是一个字符的序列;
1):特殊字符

. (匹配任何字符)

\n (匹配换行符)

\f (匹配换页符)

\xhhhh(匹配一个unicode字符,其对应的码值是范围0x0000到0xFFFF之间的一个十六进制数hhhh)

2)量词:

+ (出现1此或者更多次)

?(出现0次 或者 1 次)

* (出现0次 或者 更多次)

{i,j} (出现至少i次 但是不超过j次)

3)字符集 ---- 在匹配表达式指定位置允许出现的字符集合,其中还预定义了几个字符集合:

\s (匹配任何 空白字符)

\S (匹配任何 非空白字符)

\d (匹配任何 数字字符: 从‘0’ 到 ‘9’ )

\D (匹配任何 非数字字符)

\w (匹配任何"单词"字符,也就是任意的字母、数字或者下划线)

\W (匹配任意的非单词字符)

字符集也可以使用方括号指定:

[ABCES] (匹配这五个字符中的任意一个)

[a-g] (匹配a-g中任意一个字符)

[^xyz] (匹配任何除这三个字符以外的字符)

4)分组 和捕获字符 --- () 可以用来把字符划分成组的特殊字符,字符组可以是向后引用的。也就是说,如果存在一个匹配,那么分组了的值可以通过各种方式捕获和访问;
一般一个正则表达式最多可以引用9个分组,即\1到\9这样的修饰;
此外还有一个QRegExp成员函数cap(int nth),它返回第n个分组(基于QString的形式返回).



5)锚点字符 --- 确定尝试进行匹配操作的边界

脱字符(^) 如果是正则表达式中的第一个字符,则说明匹配过程从字符串的开头处开始,

美元符($) 如果是正则表达式中最后一个字符,则表明匹配过程直到字符串的结尾才会结束;

单词边界 \b 非单词边界\B



例子:
c*at c出现零次或者多次,at紧跟其后;例如 at,cat,ccat等;
c?at c出现零次或者1次,之后紧跟着at:仅at或者 at;
c.t c之后紧跟任意字符,其后面又紧跟t的字符匹配,例如cat,cot等等;
c.*t 字符c后边紧跟0个或者多个任意字符,然后紧跟t,例如 ct,caaatt, casdasdt等等
ca+t '+'意味着前面的字符可以出现一次或者多次,因此符合条件的有cat,caat,caaat等等
c\.\*t 反斜线在特殊字符之前将会"使其转义",因此,只有字符串"c.*t"才能匹配;;
c\\\.t 只和字符串"\c.t"匹配;
c[0-9a-c]+z c 与 z 之间可以出现[]中的任意字符,+ 表示出现1+ 最少1次
the (cat | dog) ate (fish|mouse) (轮流交替)匹配的结果是 四次;; 不断变换 the cat ate fish ;
the dog ate mouse; --------
\w+ 字母数字(单词字符)的序列,与【a-zA-Z0-9】+等价
\W 非单词字符(标点符号/空白符号等)
\s{5} 正好5个空白字符(制表符,空白符或者换行符)
^\s+ 匹配字符串开头处的一个或者多个空白字符
\s+$ 匹配字符串结尾处的一个或者多个空白字符
^Help 如果Help出现在字符串的开头,就匹配它;
[^Help] 与字符串中任意地方(和元字符^的意思不一样)的除单词Help中任一字母之外的任何单个字符相匹配
\S{1,5} 至少1个、至多5个非空白字符(可打印的字符)
\d 一个数字[0-9](\D是一个非数字,也就是[^-0-9])
\d{3}-\d{4}7位电话号码: 3位-四位
\bm{A-Z}\w+ \b代表单词边界:mBuffer匹配而StreamBuffer不匹配;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: