本文主要总结Qt中正则表达式的简单用法,其中Qt中正则表达式有两个常用类QRegularExpression和QRegularExpressionMatch。
其中类QRegularExpression的对象re可以表示正则表达式规则,正则表达式的规则和语法介绍可以参考这篇博客:https://blog.csdn.net/scgaliguodong123_/article/details/45363409;用QRegularExpression::match(QString)函数可以匹配正则表达式语法规定的字符串,结果存入类QRegularExpressionMatch的对象match中。
类QRegularExpressionMatch的对象match接收re匹配后的结果,可以用QRegularExpressionMatch::captured(0)输出。
1.1具体示例代码如下所示
#include <QRegularExpression>
#include <QRegularExpressionMatch>
void Widget::on_pushButton_5_clicked()
{
//匹配字符串中连续两位数字后面跟着一串字母,遇到空格截止
QRegularExpression re("\\d{3}([a-z]+|[A-Z]+)");
QRegularExpressionMatch match=re.match("abc123 def abc123def abc123 def");
if(match.hasMatch())
{
QString matched = match.captured(0);
qDebug()<<matched;
}
}
1.2正则表达式详解
\\d{3}:\\d表示转义字符,因为C++用\\表示实际的\,即\\d表示整数,后面的{3}表示目的字符串有连续的三个整数,比如123。
[a-z]+:表示匹配中括号里面小写字母a-z的任意一个字母,后面的+号表示要查找的字符串至少出现一个小写字母。
[A-Z]+:表示匹配中括号里面大写字母A-Z的任意一个字母,后面的+号表示要查找的字符串至少出现一个大写字母。
():([a-z]+[A-Z]+)中的括号()表示是一个整体,则正表达式将该整体标为序号1。
所以\\d{3}([a-z]+[A-Z]+)表示查找目的字符串中起始为连续的三个整数后面跟着一串任意大小写字母,比如123aHkjHU。
1.3结果如下图所示
参考内容:
https://blog.csdn.net/scgaliguodong123_/article/details/45363409(参考:QRegularExpression用法)
https://doc.qt.io/qt-5/qregularexpression.html(参考:qt官方文档QRegularExpression用法和示例)
https://blog.csdn.net/scgaliguodong123_/article/details/45363409(参考:正则表达式语法详细讲解)