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表示替换所有的匹配 |

浙公网安备 33010602011771号