QRegularExpression 类
Qt5.0 引入,用于解析正则表达式的类。基于 PCRE2(Perl Compatible Regular Expressions),功能强大、性能好、支持 Unicode,是现代 Qt 应用的首选。
基本用法示例
1. 匹配字符串是否符合模式
#include <QRegularExpression>
#include <QDebug>
QString email = "[email protected]";
QRegularExpression re(R"(^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$)");
QRegularExpressionMatch match = re.match(email);
if(match.hasMatch()){
qDebug() << "Valid email!";
}
注意:使用原始字符串字面量 R"(...)" 避免反斜杠转义问题。
R"(...)" 是 C++11 引入的**原始字符串字面量(Raw String Literal)**语法,不是 Qt 特有的,而是标准 C++ 的特性。它常被 Qt 开发者用于书写正则表达式、文件路径、SQL 语句等包含大量反斜杠 \ 或引号的字符串,以避免繁琐的转义。
2. 提取捕获组(Capturing Groups)
QString text = "Date: 2026-01-01";
QRegularExpression re(R"(Date: (\d{4})-(\d{2})-(\d{2}))");
QRegularExpressionMatch match = re.match(text);
if(match.hasMatch()){
QString year = match.captured(1); // "2026"
QString month = match.captured(2); // "01"
QString day = match.captured(3); // "01"
}
captured(0)是整个匹配captured(n)是第 n 个括号内的内容

