跳至主要內容

QT

LincZero小于 1 分钟

QT

目录

正则

QRegExp类

Qt6只有兼容版本,不用

QRegularExpression类

参考:https://doc-snapshots.qt.io/qt6-dev/qregularexpression.html

构造

#include <QRegularExpression>

// 匹配两个数字后跟一个空格和一个单词 
QRegularExpression re ( "\\d\\d \\w+" );	// 转义
QRegularExpression re ( R "(\d\d \w+)" ); 	// 原始字符串(和js的有点不同,引号里面还要加个括号)
// 匹配一个反斜杠 
QRegularExpression re2 ( "\\\\" );			// 四个反斜杠才等于一个反斜杠

re.setPattern("another pattern");			// 重新设置规则

// 规则转字符串
//pattern () 函数返回当前为 QRegularExpression 对象设置的模式 
QRegularExpression re("a third pattern");
QString pattern = re.pattern(); // pattern == "a third pattern"

模式选项

匹配

正常匹配

// 匹配两个数字后跟一个空格和一个单词
QRegularExpression re("\\d\\d \\w+");
QRegularExpressionMatch match = re.match("abc123 def");
bool hasMatch = match.hasMatch(); // true

匹配的子字符串

QRegularExpression re("\\d\\d \\w+");
QRegularExpressionMatch match = re.match("abc123 def");
if (match.hasMatch()) {
    QString matched = match.captured(0); // matched == "23 def"
    // ...
}

QRegularExpression re("^(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)$");
QRegularExpressionMatch match = re.match("08/12/1985");
if (match.hasMatch()) {
    QString day = match.captured(1); // day == "08"
    QString month = match.captured(2); // month == "12"
    QString year = match.captured(3); // year == "1985"
    // ...
}