Qt正则表达式
一、Qt正则表达式QRegExp
Qt使用QRegExp实现正则表达式,常用函数如下:
函数 | 说明 |
cap(int n) |
返回第n个子表达式的内容,第1个(cap(0))是整个内容 |
captureTexts() |
返回捕获的表达式的内容列表,返回值是QStringList,第1个是整个字符串 |
exactMatch(QString) |
完全匹配,返回值是bool类型 |
indexIn() |
尝试在位置offset开始找到匹配的内容,如果没有找到返回-1 |
isValid() |
判断给定的正则表达式是否是有效的,返回true有效,false无效 |
matchedLength() |
返回匹配字符串的长度 |
setPattern(QString) |
设置正则表达式,大小写敏感、通配符和最小匹配项不会改变 |
escape() |
常用来动态创建正则表达式pattern, |
二、正则表达式
2.1 元字符介绍
元字符 | 说明 |
. | 匹配除了换行符以外的任意字符 |
\w | 匹配字母、数字、下划线、汉字 |
\W | 匹配除了字母、数字、下划线、汉字以外的字符 |
\s |
匹配任意的空白符,包括空格、制表符、换页符 |
\S |
匹配所有的非空白符 |
\b |
单词的开始或结尾, |
\B |
匹配非单词边界,即左右两边都是/w范围或者所有两边都不是/w范围时的字符缝隙 |
\~或^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
\d |
匹配数字 |
\D |
匹配所有非数字字符 |
2.2 表达式介绍
常用表达式 | 说明 |
\r,\n | 回车和换行符 |
\t | 制表符 |
\\ | \本身 |
[] | 包含一系列字符 |
[^] | 包含之外的一系列字符 |
{n} | 表达式重复n次 |
{m,n} | 表达式至少重复m次,之多重复n次 |
{m,} | 表达式至少重复m次 |
? | 表达式匹配0次或1次 |
+ | 表达式至少匹配1次 |
* | 表达式至少匹配0次 |
| | 左右两边表达式之间或关系,匹配左边或右边 |
() |
1.被修饰匹配次数时,括号中的表达式可以作为整体被修饰; 2.获取匹配结果时,括号中的表达式匹配到的内容可以被单独获取到 |
在修饰匹配次数的特殊符号后加?号 |
表示非贪婪模式,使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式尽可能不匹配 |
/1,/2 |
反向引用,可以按照左括号的顺序使用括号内匹配到的内容,/1是第一个括号匹配的内容 |
(?=xxxx) |
正向预搜索匹配,在缝隙的右侧,必须能够匹配上xxxx部分的表达式 |
(?!xxxx) |
正向预搜索不匹配,在缝隙的右侧,必须不能匹配xxxx部分的表达式 |
(?<=xxxx) | 反向预搜索匹配,在缝隙的左侧,必须能够匹配xxxx部分的表达式 |
(?<!xxxx) | 反向预搜索不匹配,在缝隙的左侧,必须不能匹配xxxx部分的表达式 |
/xXX | 编号在0~255范围的字符,ASCII码来说,如空格可以使用/x20表示 |
/uXXXX | 任何字符可以使用/u再加上其编号的4位十六进制数表示 |
2.3 以下字符具有特殊意义,需要添加转移字符才能/匹配字符本身
字符 | 说明 |
^ | 匹配字符串的开始位置,/^匹配自身 |
$ | 匹配字符串的结束位置,/$匹配自身 |
() | 标记一个子表达式的开始和结束位置,/(/)匹配自身 |
[] | 自定义能够匹配多种字符的表达式,/[,/]匹配自身 |
{} | 修饰匹配次数的符号,/{,/}匹配自身 |
. | 匹配除换行符以外的任意一个字符,/.匹配自身 |
? | 匹配次数为0次或1次,/?匹配自身 |
+ | 至少匹配1次,/+匹配自身 |
* | 至少匹配0次,/*匹配自身 |
| | 左右两边表达式或关系,/|匹配自身 |
2.4 表达式属性设置
表达式属性 | 说明 |
IgnoreCase | 默认情况下,表达式中的字母要区分大小写,配置该属性使匹配时不区分大小写 |
Singleline | 默认情况下,小数点.匹配除了换行符以外的任意字符,配置该属性可使小数点匹配包括换行符在内的所有字符 |
Multiline | 默认情况下,^和$只匹配所有字符串的开始和结尾位置,配置该属性可匹配每一行的开始和结尾位置 |
Global | 在将表达式用来替换时起作用,配置为Global表示替换所有的匹配 |