正则表达式:
是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
如何描述字符:
因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用这些特殊字符(元字符)来描述普通字符。
- 1、在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字
- 2、可以匹配除’\n’任意字符
- 3、要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符
- 4、\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格
- 5、 \S表示匹配任意不是空白符的字符
- 6、\表示将下一字符标记为特殊字符、文本、反向引用或八进制转义符
- 7、对于更精确地匹配,可以用[ ]表示范围
- 8、A|B可以匹配A或B
- 9、^表示行的开头
- 10、$表示行的结束
本篇blog是在Qt中的应用时所写:
- Qt中正则表达式的头文件
#include <QRegExp>
新建正则匹配表达式
QRegExp rx1("\\b[A-Za-z0-9_]+(?=\\()")//匹配函数名,即()前的标识符 QRegExp rx2("\#include\s*(<([^"<>|\b]+)>|"([^"<>|\b]+)")")//匹配#include <>/""头文件关键字 QRegExp rx3("(\<([^\<]*)\>)|(\"([^\"]*)\")")//匹配双引号或<>中的字符串
设置统配模式
rx.setPatternSyntax(QRegExp::Wildcard);
判断是否匹配
rx.exactMatch("string");