QRegularExpressionMatch 类

QRegularExpressionMatch 类提供了对字符串进行正则表达式匹配的结果。更多信息...

头文件 #include <QRegularExpressionMatch>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

注意: 此类中所有函数都是 可重入的

公开函数

QRegularExpressionMatch()
QRegularExpressionMatch(const QRegularExpressionMatch &match)
(since 6.1) QRegularExpressionMatch(QRegularExpressionMatch &&match)
~QRegularExpressionMatch()
QStringcaptured(int nth = 0) const
QStringcaptured(const QString &name) const
QStringcaptured(QStringView name) const
qsizetypecapturedEnd(int nth = 0) const
qsizetypecapturedEnd(const QString &name) const
qsizetypecapturedEnd(QStringView name) const
qsizetypecapturedLength(int nth = 0) const
qsizetypecapturedLength(const QString &name) const
qsizetypecapturedLength(QStringView name) const
qsizetypecapturedStart(int nth = 0) const
qsizetypecapturedStart(const QString &name) const
qsizetypecapturedStart(QStringView name) const
QStringListcapturedTexts() const
QStringViewcapturedView(int nth = 0) const
QStringViewcapturedView(QStringView name) const
(since 6.3) boolhasCaptured(const QString &name) const
(since 6.3) boolhasCaptured(QStringView name) const
(since 6.3) boolhasCaptured(int nth) const
boolhasMatch() const
boolhasPartialMatch() const
boolisValid() const
intlastCapturedIndex() const
QRegularExpression::MatchOptionsmatchOptions() const
QRegularExpression::MatchTypematchType() const
QRegularExpressionregularExpression() const
voidswap(QRegularExpressionMatch &other)
QRegularExpressionMatch &operator=(const QRegularExpressionMatch &match)
QRegularExpressionMatch &operator=(QRegularExpressionMatch &&match)
QDebugoperator<<(QDebug debug, const QRegularExpressionMatch &match)

详细说明

可以通过调用QRegularExpression::match()函数获取一个QRegularExpressionMatch对象,或者在从QRegularExpressionMatchIterator中获取的全局匹配结果的单个结果。

可以通过调用hasMatch()函数检查匹配尝试的成功或失败。QRegularExpressionMatch还可以通过调用hasPartialMatch()函数报告部分匹配的成功。

此外,QRegularExpressionMatch返回由模式字符串中的捕获组捕获的子字符串。索引为0的隐式捕获组捕获整个匹配的结果。通过captured()函数,按捕获组的索引或名称返回每个捕获到的子字符串

QRegularExpression re("(\\d\\d) (?<name>\\w+)");
QRegularExpressionMatch match = re.match("23 Jordan");
if (match.hasMatch()) {
    QString number = match.captured(1); // first == "23"
    QString name = match.captured("name"); // name == "Jordan"
}

对于每个捕获到的子字符串,可以通过调用capturedStart()和capturedEnd()函数分别查询其在主字符串中的起始和结束偏移量。可以通过capturedLength()函数获取每个捕获到的子字符串的长度。

便利函数capturedTexts()将一次性返回所有捕获到的子字符串(包括整个模式匹配的子字符串),按捕获组捕获的顺序排列;即captured(i) == capturedTexts().at(i)

您可以通过调用regularExpression()函数检索与主字符串进行匹配的QRegularExpression对象;通过调用matchType()和matchOptions(),可以分别获取匹配类型和匹配选项。

请参阅QRegularExpression文档,以获取有关Qt正则表达式类的更多信息。

另请参阅QRegularExpression.

成员函数文档

[自6.3起] bool QRegularExpressionMatch::hasCaptured(QStringView name) const

[自6.3起] bool QRegularExpressionMatch::hasCaptured(const QString &name) const

如果命名name的捕获组在主题字符串中捕获了某些内容,则返回true,否则返回false(或如果没有名为name的捕获组)。

注意:正则表达式中的一些捕获组可能没有捕获任何内容,即使正则表达式匹配。例如,如果模式中使用条件操作符,则可能发生这种情况。

QRegularExpression re("([a-z]+)|([A-Z]+)");
QRegularExpressionMatch m = re.match("UPPERCASE");
if (m.hasMatch()) {
    qDebug() << m.hasCaptured(0); // true
    qDebug() << m.hasCaptured(1); // false
    qDebug() << m.hasCaptured(2); // true
}

类似地,捕获组可能捕获长度为0的子字符串;此函数将为此捕获组返回true

此函数是在Qt 6.3中引入的。

另请参阅captured() 和 hasMatch()。

QRegularExpressionMatch::QRegularExpressionMatch()

构造一个有效的、空的 QRegularExpressionMatch 对象。正则表达式设置为默认构造的一个;匹配类型设为 QRegularExpression::NoMatch,匹配选项设为 QRegularExpression::NoMatchOption

对象将通过 hasMatch() 和 hasPartialMatch() 成员函数报告无匹配。

QRegularExpressionMatch::QRegularExpressionMatch(const QRegularExpressionMatch &match)

通过复制给定 match 的结果来构造一个匹配结果。

另请参阅operator=

[noexcept, since 6.1] QRegularExpressionMatch::QRegularExpressionMatch(QRegularExpressionMatch &&match)

通过移动给定 match 的结果来构造一个匹配结果。

请注意,从已移动的 QRegularExpressionMatch 可以仅被销毁或赋值。调用除析构函数或赋值运算符之外的其他函数的行为是未定义的。

此函数从 Qt 6.1 版本开始引入。

另请参阅operator=

[noexcept] QRegularExpressionMatch::~QRegularExpressionMatch()

销毁匹配结果。

QString QRegularExpressionMatch::captured(int nth = 0) const

返回第 nth 个捕获组的子串。

如果第 nth 个捕获组没有捕获字符串,或者没有这样的捕获组,则返回一个空 QString

注意:隐式捕获组编号 0 捕获整个模式的匹配子串。

另请参阅capturedView()、lastCapturedIndex()、capturedStart()、capturedEnd()、capturedLength() 和 QString::isNull

QString QRegularExpressionMatch::captured(const QString &name) const

返回名为 name 的捕获组的子串。

如果名为 name 的捕获组没有捕获字符串,或者没有命名为 name 的捕获组,则返回一个空 QString

另请参阅capturedView()、capturedStart()、capturedEnd()、capturedLength() 和 QString::isNull

QStringView QRegularExpressionMatch::captured(QStringView name) const

返回名为 name 的捕获组的子串。

如果名为 name 的捕获组没有捕获字符串,或者没有命名为 name 的捕获组,则返回一个空 QString

另请参阅capturedView()、capturedStart()、capturedEnd()、capturedLength() 和 QString::isNull

qsizetype QRegularExpressionMatch::capturedEnd(int nth = 0) const

返回在主题字符串中,紧接被第 nth 捕获组捕获的子字符串的结束位置之后的偏移量。如果第 nth 捕获组没有捕获字符串或者不存在,则返回 -1。

另请参阅capturedStart(),capturedLength() 和 captured

qsizetype QRegularExpressionMatch::capturedEnd(const QString &name) const

返回在主题字符串中,紧接被名为 name 的捕获组捕获的子字符串的结束位置之后的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。

另请参阅capturedStart(),capturedLength() 和 captured

qsizetype QRegularExpressionMatch::capturedEnd(QStringView name) const

返回在主题字符串中,紧接被名为 name 的捕获组捕获的子字符串的结束位置之后的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。

另请参阅capturedStart(),capturedLength() 和 captured

qsizetype QRegularExpressionMatch::capturedLength(int nth = 0) const

返回第 nth 捕获组捕获的子字符串的长度。

注意: 如果第 nth 捕获组没有捕获字符串或者不存在,则此函数返回 0。

另请参阅capturedStart(),capturedEnd() 和 captured

qsizetype QRegularExpressionMatch::capturedLength(const QString &name) const

返回名为 name 的捕获组捕获的子字符串的长度。

注意: 如果名为 name 的捕获组没有捕获字符串或者不存在,则此函数返回 0。

另请参阅capturedStart(),capturedEnd() 和 captured

qsizetype QRegularExpressionMatch::capturedLength(QStringView name) const

返回名为 name 的捕获组捕获的子字符串的长度。

注意: 如果名为 name 的捕获组没有捕获字符串或者不存在,则此函数返回 0。

另请参阅capturedStart(),capturedEnd() 和 captured

qsizetype QRegularExpressionMatch::capturedStart(int nth = 0) const

返回主题字符串中对应于第 nth 捕获组捕获的子字符串起始位置的偏移量。如果第 nth 捕获组没有捕获字符串或者不存在,则返回 -1。

另请参阅capturedEnd(),capturedLength() 和 captured

qsizetype QRegularExpressionMatch::capturedStart(const QString &name) const

返回主题字符串中对应于名为 name 的捕获组捕获的子字符串起始位置的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。

另请参阅capturedEnd(),capturedLength() 和 captured

qsizetype QRegularExpressionMatch::capturedStart(QStringView name) const

返回主题字符串中对应于名为 name 的捕获组捕获的子字符串起始位置的偏移量。如果名为 name 的捕获组没有捕获字符串或者不存在,则返回 -1。

另请参阅capturedEnd(),capturedLength() 和 captured

QStringList QRegularExpressionMatch::capturedTexts() const

返回一个捕获组捕获的所有字符串的列表,按捕获组在模式字符串中出现的顺序排列。该列表包括隐式捕获组号 0,它捕获整个模式匹配的子字符串。

QStringView QRegularExpressionMatch::capturedView(int nth = 0) const

返回第 nth 个捕获组的子字符串视图。

如果第 nth 个捕获组未捕获字符串,或者没有这样的捕获组,则返回一个空的 QStringView

注意:隐式捕获组编号 0 捕获整个模式的匹配子串。

另请参阅 captured()、lastCapturedIndex()、capturedStart()、capturedEnd()、capturedLength() 和 QStringView::isNull

QStringView QRegularExpressionMatch::capturedView(QStringView name) const

返回名为 name 的捕获组的字符串视图。

如果名为 name 的捕获组未捕获字符串,或者没有名为 name 的捕获组,则返回一个空的 QStringView

另请参阅 captured()、capturedStart()、capturedEnd()、capturedLength() 和 QStringView::isNull

[自 6.3 以来] bool QRegularExpressionMatch::hasCaptured(int nth) const

如果第 nth 个捕获组在主题字符串中捕获了内容,则返回 true;否则返回 false(或如果没有这样的捕获组)。

注意:隐式捕获组编号 0 捕获整个模式的匹配子串。

注意:正则表达式中的一些捕获组可能没有捕获任何内容,即使正则表达式匹配。例如,如果模式中使用条件操作符,则可能发生这种情况。

QRegularExpression re("([a-z]+)|([A-Z]+)");
QRegularExpressionMatch m = re.match("UPPERCASE");
if (m.hasMatch()) {
    qDebug() << m.hasCaptured(0); // true
    qDebug() << m.hasCaptured(1); // false
    qDebug() << m.hasCaptured(2); // true
}

类似地,捕获组可能捕获长度为0的子字符串;此函数将为此捕获组返回true

此函数是在Qt 6.3中引入的。

另请参阅 captured()、lastCapturedIndex() 和 hasMatch

bool QRegularExpressionMatch::hasMatch() const

如果正则表达式与主题字符串匹配,则返回 true;否则返回 false

另请参阅 QRegularExpression::match() 和 hasPartialMatch

bool QRegularExpressionMatch::hasPartialMatch() const

如果正则表达式部分匹配主题字符串,则返回 true;否则返回 false

注意:只有使用了部分匹配类型的显式匹配才能得到部分匹配。尽管如此,如果完整的匹配成功,该函数将返回 false,而 hasMatch() 将返回 true。

另请参阅 QRegularExpression::match()、QRegularExpression::MatchTypehasMatch

bool QRegularExpressionMatch::isValid() const

如果匹配对象是由对有效 QRegularExpression 对象调用 QRegularExpression::match() 函数获得的,则返回 true;如果 QRegularExpression 无效,则返回 false

另请参阅 QRegularExpression::match() 和 QRegularExpression::isValid

int QRegularExpressionMatch::lastCapturedIndex() const

返回包含捕获内容的最后一个捕获组的索引,包括隐含的捕获组0。这可以用来提取捕获的所有子串。

QRegularExpressionMatch match = re.match(string);
for (int i = 0; i <= match.lastCapturedIndex(); ++i) {
    QString captured = match.captured(i);
    // ...
}

注意,索引小于lastCapturedIndex()的一些捕获组可能未匹配,因此没有捕获到内容。

如果正则表达式未匹配,则此函数返回-1。

另请参阅hasCaptured(),captured(),capturedStart(),capturedEnd()和capturedLength()。

QRegularExpression::MatchOptions QRegularExpressionMatch::matchOptions() const

返回用于获得此QRegularExpressionMatch对象匹配选项,即传递给QRegularExpression::match()或QRegularExpression::globalMatch()的匹配选项。

另请参阅QRegularExpression::matchregularExpressionmatchType

QRegularExpression::MatchType QRegularExpressionMatch::matchType() const

返回用于获得此QRegularExpressionMatch对象的匹配类型,即传递给QRegularExpression::matchQRegularExpression::globalMatch的匹配类型。

另请参阅QRegularExpression::matchregularExpressionmatchOptions

QRegularExpression QRegularExpressionMatch::regularExpression() const

返回其match()函数返回此对象的QRegularExpression对象。

另请参阅QRegularExpression::matchmatchTypematchOptions

[noexcept] void QRegularExpressionMatch::swap(QRegularExpressionMatch &other)

交换匹配结果other与当前匹配结果。此操作非常快速且永不失败。

QRegularExpressionMatch &QRegularExpressionMatch::operator=(const QRegularExpressionMatch &match)

将匹配结果match赋给此对象,并返回对复制的引用。

[noexcept] QRegularExpressionMatch &QRegularExpressionMatch::operator=(QRegularExpressionMatch &&match)

移动赋值匹配结果match到此对象,并返回结果的引用。

请注意,从某个位置移动而来的QRegularExpressionMatch对象只能被销毁或赋值。

相关非成员

QDebug operator<<(QDebug debug, const QRegularExpressionMatch &match)

用于调试目的,将匹配对象 match 写入调试对象 debug

另请参阅调试技术

© 2024 Qt公司。本文档中的文档贡献版权属于各自的拥有者。本文档的提供受GNU自由文档许可证第1.3版条款的约束,该许可证由自由软件基金会发布。Qt及其相关标志是Qt公司在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。