QRegularExpressionMatchIterator 类

QRegularExpressionMatchIterator 类提供了一个迭代器,用于遍历 QRegularExpression 对象在字符串上的全局匹配结果。 更多信息...

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

注意: 此类中所有函数均为 可重入

公共函数

QRegularExpressionMatchIterator()
QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator)
(自 6.1) QRegularExpressionMatchIterator(QRegularExpressionMatchIterator &&iterator)
~QRegularExpressionMatchIterator()
boolhasNext() const
boolisValid() const
QRegularExpression::MatchOptionsmatchOptions() const
QRegularExpression::MatchTypematchType() const
QRegularExpressionMatchnext()
QRegularExpressionMatchpeekNext() const
QRegularExpressionregularExpression() const
voidswap(QRegularExpressionMatchIterator &other)
QRegularExpressionMatchIterator &operator=(const QRegularExpressionMatchIterator &iterator)
QRegularExpressionMatchIterator &operator=(QRegularExpressionMatchIterator &&iterator)

详细描述

QRegularExpressionMatchIterator 对象是一个单向的类似 Java 的迭代器;可以通过调用 QRegularExpression::globalMatch() 函数来获取。新的 QRegularExpressionMatchIterator 将位于第一个结果之前。然后您可以通过调用 hasNext() 函数来检查是否还有更多结果可用;如果有,则 next() 函数将返回下一个结果并前进迭代器。

每个结果都是一个 QRegularExpressionMatch 对象,它包含了该结果的所有信息(包括捕获的子字符串)。

例如

// extracts the words
QRegularExpression re("(\\w+)");
QString subject("the quick fox");
QRegularExpressionMatchIterator i = re.globalMatch(subject);
while (i.hasNext()) {
    QRegularExpressionMatch match = i.next();
    // ...
}

此外,QRegularExpressionMatchIterator 还提供了一个 peekNext() 函数,可以在不移动迭代器的情况下获取下一个结果。

从 Qt 6.0 开始,也可以在基于范围的 for 循环中直接使用 QRegularExpression::globalMatch 的结果,例如这样

// using a raw string literal, R"(raw_characters)", to be able to use "\w"
// without having to escape the backslash as "\\w"
QRegularExpression re(R"(\w+)");
QString subject("the quick fox");
for (const QRegularExpressionMatch &match : re.globalMatch(subject)) {
    // ...
}

您可以通过调用QRegularExpression()函数检索被主题字符串匹配的QRegularExpression对象;同时,通过调用matchType()和matchOptions()可以获得匹配类型和匹配选项。

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

参见QRegularExpressionQRegularExpressionMatch

成员函数文档

QRegularExpressionMatchIterator::QRegularExpressionMatchIterator()

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

在构造对象上调用hasNext()成员函数将返回false,因为迭代器不是在有效的匹配序列上迭代。

QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator)

构造一个QRegularExpressionMatchIterator对象,作为iterator的副本。

参见操作符=

[noexcept, since 6.1] QRegularExpressionMatchIterator::QRegularExpressionMatchIterator(QRegularExpressionMatchIterator &&iterator)

通过移动自iterator构造一个QRegularExpressionMatchIterator对象。

注意,自移动的QRegularExpressionMatchIterator只能被销毁或赋值。调用除了析构函数或赋值运算符之外的其他函数的效果是未定义的。

此函数自Qt 6.1开始引入。

参见操作符=

[noexcept] QRegularExpressionMatchIterator::~QRegularExpressionMatchIterator()

销毁QRegularExpressionMatchIterator对象。

bool QRegularExpressionMatchIterator::hasNext() const

如果迭代器前面至少有一个匹配结果,则返回true;否则返回false

参见next

bool QRegularExpressionMatchIterator::isValid() const

如果迭代器对象是从在有效的QRegularExpression对象上调用QRegularExpression::globalMatch()函数的结果获得;如果QRegularExpression无效,则返回false

参见QRegularExpression::globalMatch()和QRegularExpression::isValid

QRegularExpression::MatchOptions QRegularExpressionMatchIterator::matchOptions() const

返回获取此QRegularExpressionMatchIterator对象所使用的匹配选项,即传递给QRegularExpression::globalMatch()的匹配选项。

另请参阅QRegularExpression::globalMatchregularExpressionmatchType

QRegularExpression::MatchType QRegularExpressionMatchIterator::matchType() const

返回获取此QRegularExpressionMatchIterator对象所使用的匹配类型,即传递给QRegularExpression::globalMatch()的匹配类型。

另请参阅QRegularExpression::globalMatchregularExpressionmatchOptions

QRegularExpressionMatch QRegularExpressionMatchIterator::next()

返回下一个匹配结果并使迭代器向前移动一位。

注意:当迭代器位于结果集的末尾时调用此函数会导致未定义的结果。

QRegularExpressionMatch QRegularExpressionMatchIterator::peekNext() const

返回下一个匹配结果而不移动迭代器。

注意:当迭代器位于结果集的末尾时调用此函数会导致未定义的结果。

QRegularExpression QRegularExpressionMatchIterator::regularExpression() const

返回QRegularExpression对象,其globalMatch()函数返回此对象。

另请参阅QRegularExpression::globalMatchmatchTypematchOptions

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

交换迭代器other与此迭代器对象。此操作非常快且永远不会失败。

QRegularExpressionMatchIterator &QRegularExpressionMatchIterator::operator=(const QRegularExpressionMatchIterator &iterator)

将迭代器iterator赋值给此对象,并返回对副本的引用。

[noexcept] QRegularExpressionMatchIterator &QRegularExpressionMatchIterator::operator=(QRegularExpressionMatchIterator &&iterator)

移动赋值将iterator移动到此对象中,并返回对结果的重引用。

请注意,已移动的QRegularExpressionMatchIterator只能被销毁或赋值。调用析构函数或赋值运算符之外的其他函数的效果是未定义的。

© 2024 Qt公司有限公司。本文档中包含的文档贡献属于各自所有者的版权。本提供的文档是根据自由软件基金会发布的《GNU自由文档许可证》版本1.3的条款许可的,许可链接为http://www.gnu.org/licenses/fdl.html。Qt及其相关标志是芬兰及/或其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。